From f58ee9612a3a51e45ed9a47fefe3ce79feb993e0 Mon Sep 17 00:00:00 2001 From: Melissa Flinn Date: Thu, 30 May 2024 19:27:15 -0400 Subject: [PATCH 1/5] odh-7074 new Managing connected applications guide --- ...laborating-on-notebooks-by-using-git.adoc} | 4 +- .../creating-and-importing-notebooks.adoc | 2 +- ...bling-removing-connected-applications.adoc | 23 ++++++++ assemblies/using-the-jupyter-application.adoc | 44 ++++++++++++++ getting-started-with-open-data-hub.adoc | 6 +- managing-connected-applications.adoc | 50 ++++++++++++++++ ...notebook-servers-owned-by-other-users.adoc | 6 +- modules/creating-a-new-notebook.adoc | 4 +- modules/disabling-applications-connected.adoc | 2 +- modules/enabling-applications-connected.adoc | 58 ++++++++++++++++++ ...g-services-connected-to-open-data-hub.adoc | 59 ------------------- ...thon-packages-on-your-notebook-server.adoc | 4 +- modules/logging-in-to-open-data-hub.adoc | 4 +- ...ions-for-notebook-server-environments.adoc | 4 +- ...oc => removing-disabled-applications.adoc} | 17 +++--- ...> starting-a-jupyter-notebook-server.adoc} | 34 +++++------ ...notebook-servers-owned-by-other-users.adoc | 6 +- ...notebook-servers-owned-by-other-users.adoc | 6 +- ...er-settings-by-restarting-your-server.adoc | 11 +--- ...rom-a-git-repository-using-jupyterlab.adoc | 4 +- ...tory-using-the-command-line-interface.adoc | 4 +- ...ting-notebook-file-from-local-storage.adoc | 4 +- ...ges-installed-on-your-notebook-server.adoc | 2 +- working-on-data-science-projects.adoc | 2 +- 24 files changed, 230 insertions(+), 130 deletions(-) rename assemblies/{collaborating-on-notebooks-using-git.adoc => collaborating-on-notebooks-by-using-git.adoc} (91%) create mode 100644 assemblies/enabling-removing-connected-applications.adoc create mode 100644 assemblies/using-the-jupyter-application.adoc create mode 100644 managing-connected-applications.adoc create mode 100644 modules/enabling-applications-connected.adoc delete mode 100644 modules/enabling-services-connected-to-open-data-hub.adoc rename modules/{removing-disabled-applications-from-open-data-hub.adoc => removing-disabled-applications.adoc} (51%) rename modules/{launching-jupyter-and-starting-a-notebook-server.adoc => starting-a-jupyter-notebook-server.adoc} (68%) diff --git a/assemblies/collaborating-on-notebooks-using-git.adoc b/assemblies/collaborating-on-notebooks-by-using-git.adoc similarity index 91% rename from assemblies/collaborating-on-notebooks-using-git.adoc rename to assemblies/collaborating-on-notebooks-by-using-git.adoc index 0c0f4b94..5cb1b0a3 100644 --- a/assemblies/collaborating-on-notebooks-using-git.adoc +++ b/assemblies/collaborating-on-notebooks-by-using-git.adoc @@ -5,8 +5,8 @@ ifdef::context[:parent-context: {context}] :context: git-collab -[id="collaborating-on-notebooks-using-git_{context}"] -= Collaborating on notebooks using Git +[id="collaborating-on-notebooks-by-using-git_{context}"] += Collaborating on notebooks by using Git [role='_abstract'] If your notebooks or other files are stored in Git version control, you can import them from a Git repository onto your notebook server to work with them in JupyterLab. When you are ready, you can push your changes back to the Git repository so that others can review or use your models. diff --git a/assemblies/creating-and-importing-notebooks.adoc b/assemblies/creating-and-importing-notebooks.adoc index 07c30111..60b24eb3 100644 --- a/assemblies/creating-and-importing-notebooks.adoc +++ b/assemblies/creating-and-importing-notebooks.adoc @@ -30,7 +30,7 @@ include::modules/uploading-an-existing-notebook-file-from-a-git-repository-using ifndef::upstream[] [role='_additional-resources'] == Additional resources -* link:{rhoaidocshome}{default-format-url}/working_on_data_science_projects/collaborating-on-notebooks-using-git_git-collab[Collaborating on notebooks using Git] +* link:{rhoaidocshome}{default-format-url}/working_on_data_science_projects/collaborating-on-notebooks-by-using-git_git-collab[Collaborating on notebooks by using Git] endif::[] ifdef::parent-context[:context: {parent-context}] diff --git a/assemblies/enabling-removing-connected-applications.adoc b/assemblies/enabling-removing-connected-applications.adoc new file mode 100644 index 00000000..9c23546d --- /dev/null +++ b/assemblies/enabling-removing-connected-applications.adoc @@ -0,0 +1,23 @@ +:_module-type: ASSEMBLY + +ifdef::context[:parent-context: {context}] + +[id="enabling-removing-connected-applications"] += Enabling and removing connected applications +:upstream: +//:preview: + +ifdef::preview[] +include::../_artifacts/document-attributes-global.adoc[] +endif::preview[] + +You can extend {productname-long} capabilities by connecting to a wide range of open source and third-party applications, such as Starburst, Anaconda, and IBM. + +You can also remove unused applications from your {productname-short} dashboard so that you can focus on the applications that you are most likely to use. + +include::modules/enabling-applications-connected.adoc[leveloffset=+1] + +include::modules/removing-disabled-applications.adoc[leveloffset=+1] + +ifdef::parent-context[:context: {parent-context}] +ifndef::parent-context[:!context:] diff --git a/assemblies/using-the-jupyter-application.adoc b/assemblies/using-the-jupyter-application.adoc new file mode 100644 index 00000000..7383f8cb --- /dev/null +++ b/assemblies/using-the-jupyter-application.adoc @@ -0,0 +1,44 @@ +:_module-type: ASSEMBLY + +ifdef::context[:parent-context: {context}] + +[id="using-the-jupyter-application"] += Using the Jupyter application +:upstream: +//:preview: + +ifdef::preview[] +include::../_artifacts/document-attributes-global.adoc[] +endif::preview[] + +:context: jupyterapp +//for Jupyter tile +//other context that uses these files is jupyterwb for workbench + +== Using the Jupyter application +{productname-long} provides access to Jupyter as an enabled application for situations where, for example, you do not want users to have their own data science projects or you want to open a notebook that was developed outside of {productname-short} and has no dependencies on other environments. + +ifndef::upstream[] +Note that the preferred way to access Jupyter on {productname-short} is through a data science project, as described in link:{rhoaidocshome}{default-format-url}/working_on_data_science_projects/working-on-data-science-projects_nb-server#creating-a-project-workbench_nb-server[Creating a workbench]. The advantages to using an {productname-short} data science project and creating a workbench that includes Jupyter, is that your project organizes your data science work in one place and adds functionality such as data connections so that you can access data and save your models and pipelines for automating your ML workflow. +endif::[] +ifdef::upstream[] +Note that the preferred way to access Jupyter on {productname-short} is through a data science project, as described in link:{odhdocshome}/working_on_data_science_projects/#creating_a_project_workbench[Creating a workbench]. The advantages to using an {productname-short} data science project and creating a workbench that includes Jupyter, is that your project organizes your data science work in one place and adds functionality such as data connections so that you can access data and save your models and pipelines for automating your ML workflow. +endif::[] + + +include::assemblies/creating-and-importing-notebooks.adoc[leveloffset=+1] + + +include::assemblies/collaborating-on-notebooks-by-using-git.adoc[leveloffset=+1] + +== Managing Python packages + +include::modules/viewing-python-packages-installed-on-your-notebook-server.adoc[leveloffset=+2] + +include::modules/installing-python-packages-on-your-notebook-server.adoc[leveloffset=+2] + +include::modules/troubleshooting-common-problems-in-jupyter-for-users.adoc[leveloffset=+1] + + +ifdef::parent-context[:context: {parent-context}] +ifndef::parent-context[:!context:] diff --git a/getting-started-with-open-data-hub.adoc b/getting-started-with-open-data-hub.adoc index a2298202..4cf2a6a5 100644 --- a/getting-started-with-open-data-hub.adoc +++ b/getting-started-with-open-data-hub.adoc @@ -25,7 +25,7 @@ include::modules/creating-a-data-science-project.adoc[leveloffset=+1] include::modules/creating-a-project-workbench.adoc[leveloffset=+1] -include::modules/launching-jupyter-and-starting-a-notebook-server.adoc[leveloffset=+2] +include::modules/starting-a-jupyter-notebook-server.adoc[leveloffset=+2] include::modules/options-for-notebook-server-environments.adoc[leveloffset=+2] @@ -35,11 +35,11 @@ include::modules/accessing-tutorials.adoc[leveloffset=+2] include::modules/configuring-your-ide.adoc[leveloffset=+1] -include::modules/enabling-services-connected-to-open-data-hub.adoc[leveloffset=+1] +include::modules/enabling-applications-connected.adoc[leveloffset=+1] include::modules/disabling-applications-connected.adoc[leveloffset=+1] -include::modules/removing-disabled-applications-from-open-data-hub.adoc[leveloffset=+2] +include::modules/removing-disabled-applications.adoc[leveloffset=+2] include::assemblies/support-requirements-and-limitations.adoc[leveloffset=+1] diff --git a/managing-connected-applications.adoc b/managing-connected-applications.adoc new file mode 100644 index 00000000..8c0987f8 --- /dev/null +++ b/managing-connected-applications.adoc @@ -0,0 +1,50 @@ +--- +layout: docs +title: Managing connected applications +permalink: /docs/managing-connected-applications +custom_css: asciidoc.css +--- + +:upstream: +include::_artifacts/document-attributes-global.adoc[] + +:doctype: book +:toc: left +:compat-mode: +:context: connected-apps + +== Managing connected applications + + +include::assemblies/enabling-removing-connected-applications.adoc[leveloffset=+1] + +//include::assemblies/using-the-jupyter-application.adoc[leveloffset=+1] + + +== Using the Jupyter application +{productname-long} provides access to Jupyter as an enabled application for situations where, for example, you do not want users to have their own data science projects or you want to open a notebook that was developed outside of {productname-short} and has no dependencies on other environments. + +ifndef::upstream[] +Note that the preferred way to access Jupyter on {productname-short} is through a data science project, as described in link:{rhoaidocshome}{default-format-url}/working_on_data_science_projects/working-on-data-science-projects_nb-server#creating-a-project-workbench_nb-server[Creating a workbench]. The advantages to using an {productname-short} data science project and creating a workbench that includes Jupyter, is that your project organizes your data science work in one place and adds functionality such as data connections so that you can access data and save your models and pipelines for automating your ML workflow. +endif::[] +ifdef::upstream[] +Note that the preferred way to access Jupyter on {productname-short} is through a data science project, as described in link:{odhdocshome}/working-on-data-science-projects/#_using_data_science_projects[Creating a workbench]. The advantages to using an {productname-short} data science project and creating a workbench that includes Jupyter, is that your project organizes your data science work in one place and adds functionality such as data connections so that you can access data and save your models and pipelines for automating your ML workflow. +endif::[] + +include::modules/starting-a-jupyter-notebook-server.adoc[leveloffset=+2] + +include::assemblies/creating-and-importing-notebooks.adoc[leveloffset=+2] + + +include::assemblies/collaborating-on-notebooks-by-using-git.adoc[leveloffset=+2] + +=== Managing Python packages + +In JupyterLab, you can view the Python packages that are installed on your notebook image and install additional packages. + +include::modules/viewing-python-packages-installed-on-your-notebook-server.adoc[leveloffset=+3] + +include::modules/installing-python-packages-on-your-notebook-server.adoc[leveloffset=+3] + +include::modules/updating-notebook-server-settings-by-restarting-your-server.adoc[leveloffset=+2] + diff --git a/modules/accessing-notebook-servers-owned-by-other-users.adoc b/modules/accessing-notebook-servers-owned-by-other-users.adoc index 322955b1..8b0f9f7e 100644 --- a/modules/accessing-notebook-servers-owned-by-other-users.adoc +++ b/modules/accessing-notebook-servers-owned-by-other-users.adoc @@ -11,19 +11,19 @@ Administrators can access notebook servers that are owned by other users to corr ifdef::upstream[] * You are part of the {openshift-platform} administrator group which requires the `cluster-admin` role on {openshift-platform}. For more information, see link:https://access.redhat.com/documentation/en-us/openshift_container_platform/{ocp-latest-version}/html/authentication_and_authorization/using-rbac#creating-cluster-admin_using-rbac[Creating a cluster admin]. -* You have launched the Jupyter application, as described in link:{odhdocshome}/getting-started-with-open-data-hub/#launching-jupyter-and-starting-a-notebook-server_get-started[Launching Jupyter and starting a notebook server]. +* You have launched the Jupyter application, as described in link:{odhdocshome}/getting-started-with-open-data-hub/#starting-a-jupyter-notebook-server_get-started[Starting a Jupyter notebook server]. endif::[] ifdef::self-managed[] * You are part of the {openshift-platform} administrator group. For more information, see link:{rhoaidocshome}{default-format-url}/installing_and_uninstalling_{url-productname-short}/installing-and-deploying-openshift-ai_install#adding-administrative-users-for-{openshift-platform-url}_install[Adding administrative users for {openshift-platform}]. -* You have launched the Jupyter application, as described in link:{rhoaidocshome}{default-format-url}/getting_started_with_{url-productname-long}/creating-a-project-workbench_get-started#launching-jupyter-and-starting-a-notebook-server_get-started[Launching Jupyter and starting a notebook server]. +* You have launched the Jupyter application, as described in link:{rhoaidocshome}{default-format-url}/getting_started_with_{url-productname-long}/creating-a-project-workbench_get-started#starting-a-jupyter-notebook-server_get-started[Starting a Jupyter notebook server]. endif::[] ifdef::cloud-service[] * You are part of the OpenShift Dedicated or Red Hat OpenShift Service on AWS (ROSA) administrator group. For more information, see link:{rhoaidocshome}{default-format-url}/installing_and_uninstalling_{url-productname-short}/installing-and-deploying-openshift-ai_install#adding-administrative-users-in-openshift_install[Adding administrative users]. -* You have launched the Jupyter application, as described in link:{rhoaidocshome}{default-format-url}/getting_started_with_{url-productname-long}/creating-a-project-workbench_get-started#launching-jupyter-and-starting-a-notebook-server_get-started[Launching Jupyter and starting a notebook server]. +* You have launched the Jupyter application, as described in link:{rhoaidocshome}{default-format-url}/getting_started_with_{url-productname-long}/creating-a-project-workbench_get-started#starting-a-jupyter-notebook-server_get-started[Starting a Jupyter notebook server]. endif::[] * The notebook server that you want to access is running. diff --git a/modules/creating-a-new-notebook.adoc b/modules/creating-a-new-notebook.adoc index 82589abc..f90238fb 100644 --- a/modules/creating-a-new-notebook.adoc +++ b/modules/creating-a-new-notebook.adoc @@ -7,11 +7,9 @@ [role='_abstract'] You can create a new Jupyter notebook from an existing notebook container image to access its resources and properties. The *Notebook server control panel* contains a list of available container images that you can run as a single-user notebook server. -// Reference: https://docs.google.com/document/d/1TFszdhIkxXbb7Kc1OirASAlaBkmINYmTtdSyaoHIbZI/edit - .Prerequisites * Ensure that you have logged in to {productname-long}. -* Ensure that you have launched your notebook server and logged in to Jupyter. +* Ensure that you have launched your notebook server and logged in to JupyterLab. * The notebook image exists in a registry, image stream, and is accessible. .Procedure diff --git a/modules/disabling-applications-connected.adoc b/modules/disabling-applications-connected.adoc index 07f2f4ad..0d4e180b 100644 --- a/modules/disabling-applications-connected.adoc +++ b/modules/disabling-applications-connected.adoc @@ -8,7 +8,7 @@ You can disable applications and components so that they do not appear on the {p Disabling unused applications allows your data scientists to manually remove these application tiles from their {productname-short} dashboard so that they can focus on the applications that they are most likely to use. ifndef::upstream[] -See link:{rhoaidocshome}{default-format-url}/getting_started_with_{url-productname-long}/disabling-applications_get-started#removing-disabled-applications_get-started[Removing disabled applications from {productname-short}] for more information about manually removing application tiles. +See link:{rhoaidocshome}{default-format-url}/managing-connected-applications/removing-disabled-applications_connected-apps[Removing disabled applications from the dashboard] for more information about manually removing application tiles. endif::[] [IMPORTANT] diff --git a/modules/enabling-applications-connected.adoc b/modules/enabling-applications-connected.adoc new file mode 100644 index 00000000..b62f887b --- /dev/null +++ b/modules/enabling-applications-connected.adoc @@ -0,0 +1,58 @@ +:_module-type: PROCEDURE + +[id='enabling-applications-connected_{context}'] += Enabling applications that are connected to {productname-short} + +[role='_abstract'] +You must enable SaaS-based applications, such as Anaconda Professional Edition, before using them with {productname-long}. On-cluster applications are enabled automatically. + +Typically, you can install, or enable applications connected to {productname-short} using one of the following methods: + +* Enabling the application from the *Explore* page on the {productname-short} dashboard, as documented in the following procedure. +* Installing the Operator for the application from OperatorHub. OperatorHub is a web console for cluster administrators to discover and select Operators to install on their cluster. It is deployed by default in {openshift-platform} (link:https://access.redhat.com/documentation/en-us/openshift_container_platform/{ocp-latest-version}/html/operators/administrator-tasks#olm-installing-from-operatorhub-using-web-console_olm-adding-operators-to-a-cluster[Installing from OperatorHub using the web console]). ++ +ifndef::upstream[] +[NOTE] +==== +Deployments containing Operators installed from OperatorHub may not be fully supported by {org-name}. +==== +endif::[] +* Installing the Operator for the application from {org-name} Marketplace (link:https://marketplace.redhat.com/en-us/documentation/operators[Install Operators]). +ifdef::upstream,self-managed[] +* Installing the application as an {install-package} to your {openshift-platform} cluster (link:https://docs.openshift.com/container-platform/{ocp-latest-version}/operators/admin/olm-adding-operators-to-cluster.html[Adding Operators to a cluster]). +endif::[] +ifdef::cloud-service[] +* Installing the application as an {install-package} to your OpenShift Dedicated (link:https://docs.openshift.com/dedicated/operators/admin/olm-adding-operators-to-cluster.html[Adding Operators to an OpenShift Dedicated cluster]) or ROSA cluster (link:https://docs.openshift.com/rosa/operators/admin/olm-adding-operators-to-cluster.html[Adding Operators to a ROSA cluster]). +endif::[] + +For some applications (such as Jupyter), the API endpoint is available on the tile for the application on the *Enabled* page of {productname-short}. Certain applications cannot be accessed directly from their tiles, for example, OpenVINO and Anaconda provide notebook images for use in Jupyter and do not provide an endpoint link from their tile. Additionally, it may be useful to store these endpoint URLs as environment variables for easy reference in a notebook environment. + +Some applications cannot be accessed directly from their tiles. For example, OpenVINO and Anaconda provide notebook images for use in Jupyter and do not provide an endpoint link from their tiles. + +Some independent software vendor (ISV) applications must be installed in specific namespaces. In these cases, the tile for the application in the {productname-short} dashboard specifies the required namespace. + +To help you get started quickly, you can access the application's learning resources and documentation on the **Resources** page, or on the **Enabled** page by clicking the relevant link on the tile for the application. + +.Prerequisites +* You have logged in to {productname-short}. +ifdef::upstream,self-managed[] +* Your administrator has installed or configured the application on your {openshift-platform} cluster. +endif::[] +ifdef::cloud-service[] +* Your administrator has installed or configured the application on your OpenShift cluster. +endif::[] + +.Procedure +. On the {productname-short} home page, click *Explore*. +. On the *Explore* page, find the tile for the application that you want to enable. +. Click *Enable* on the application tile. +. If prompted, enter the application's service key and then click *Connect*. +. Click *Enable* to confirm that you want to enable the application. + +.Verification +* The application that you enabled appears on the *Enabled* page. +* The API endpoint is displayed on the tile for the application on the *Enabled* page. + +//[role="_additional-resources"] +//.Additional resources +//* TODO or delete diff --git a/modules/enabling-services-connected-to-open-data-hub.adoc b/modules/enabling-services-connected-to-open-data-hub.adoc deleted file mode 100644 index 74c32d03..00000000 --- a/modules/enabling-services-connected-to-open-data-hub.adoc +++ /dev/null @@ -1,59 +0,0 @@ -:_module-type: PROCEDURE - -[id='enabling-services_{context}'] -= Enabling services connected to {productname-short} - -[role='_abstract'] -You must enable SaaS-based services, such as Anaconda Professional Edition, before using them with {productname-long}. On-cluster services are enabled automatically. - -Typically, you can install services, or enable services connected to {productname-short} using one of the following methods: - -* Enabling the service from the *Explore* page on the {productname-short} dashboard, as documented in the following procedure. -* Installing the Operator for the service from OperatorHub. OperatorHub is a web console for cluster administrators to discover and select Operators to install on their cluster. It is deployed by default in {openshift-platform} (link:https://access.redhat.com/documentation/en-us/openshift_container_platform/{ocp-latest-version}/html/operators/administrator-tasks#olm-installing-from-operatorhub-using-web-console_olm-adding-operators-to-a-cluster[Installing from OperatorHub using the web console]). -+ -ifndef::upstream[] -[NOTE] -==== -Deployments containing Operators installed from OperatorHub may not be fully supported by {org-name}. -==== -endif::[] -* Installing the Operator for the service from {org-name} Marketplace (link:https://marketplace.redhat.com/en-us/documentation/operators[Install Operators]). -ifdef::upstream,self-managed[] -* Installing the service as an {install-package} to your {openshift-platform} cluster (link:https://docs.openshift.com/container-platform/{ocp-latest-version}/operators/admin/olm-adding-operators-to-cluster.html[Adding Operators to a cluster]). -endif::[] -ifdef::cloud-service[] -* Installing the service as an {install-package} to your OpenShift Dedicated (link:https://docs.openshift.com/dedicated/operators/admin/olm-adding-operators-to-cluster.html[Adding Operators to an OpenShift Dedicated cluster]) or ROSA cluster (link:https://docs.openshift.com/rosa/operators/admin/olm-adding-operators-to-cluster.html[Adding Operators to a ROSA cluster]). -endif::[] - -For some services (such as Jupyter), the service endpoint is available on the tile for the service on the *Enabled* page of {productname-short}. Certain services cannot be accessed directly from their tiles, for example, OpenVINO and Anaconda provide notebook images for use in Jupyter and do not provide an endpoint link from their tile. Additionally, it may be useful to store these endpoint URLs as environment variables for easy reference in a notebook environment. - -Some independent software vendor (ISV) applications must be installed in specific namespaces. In these cases, the tile for the application in the {productname-short} dashboard specifies the required namespace. - -To help you get started quickly, you can access the service's learning resources and documentation on the **Resources** page, or by clicking the relevant link on the tile for the service on the **Enabled** page. - -.Prerequisites -* You have logged in to {productname-short}. -ifdef::upstream,self-managed[] -* Your administrator has installed or configured the service on your {openshift-platform} cluster. -endif::[] -ifdef::cloud-service[] -* Your administrator has installed or configured the service on your OpenShift cluster. -endif::[] - -.Procedure -. On the {productname-short} home page, click *Explore*. -+ -The *Explore* page opens. - -. Click the tile of the service that you want to enable. -. Click *Enable* on the drawer for the service. -. If prompted, enter the service's key and click *Connect*. -. Click *Enable* to confirm that you are enabling the service. - -.Verification -* The service that you enabled appears on the *Enabled* page. -* The service endpoint is displayed on the tile for the service on the *Enabled* page. - -//[role="_additional-resources"] -//.Additional resources -//* TODO or delete diff --git a/modules/installing-python-packages-on-your-notebook-server.adoc b/modules/installing-python-packages-on-your-notebook-server.adoc index 549a1d5c..cd72af1e 100644 --- a/modules/installing-python-packages-on-your-notebook-server.adoc +++ b/modules/installing-python-packages-on-your-notebook-server.adoc @@ -12,7 +12,7 @@ // endif::[] [role='_abstract'] -You can install Python packages that are not part of the default notebook server image by adding the package and the version to a `requirements.txt` file and then running the `pip install` command in a notebook cell. +You can install Python packages that are not part of the default notebook server by adding the package and the version to a `requirements.txt` file and then running the `pip install` command in a notebook cell. ifndef::upstream[] NOTE: You can also install packages directly, but {org-name} recommends using a `requirements.txt` file so that the packages stated in the file can be easily re-used across different notebooks. In addition, using a `requirements.txt` file is also useful when using a S2I build to deploy a model. @@ -22,7 +22,7 @@ NOTE: You can also install packages directly, but using a `requirements.txt` fil endif::[] .Prerequisites -* Log in to Jupyter and open a notebook. +* Log in to JupyterLab and open a notebook. .Procedure . Create a new text file using one of the following methods: diff --git a/modules/logging-in-to-open-data-hub.adoc b/modules/logging-in-to-open-data-hub.adoc index 7b2fc312..c88de45c 100644 --- a/modules/logging-in-to-open-data-hub.adoc +++ b/modules/logging-in-to-open-data-hub.adoc @@ -36,8 +36,8 @@ endif::[] [role="_additional-resources"] .Additional resources ifdef::upstream[] -* link:{odhdocshome}/getting-started-with-open-data-hub/#launching-jupyter-and-starting-a-notebook-server_get-started[Launching Jupyter and starting a notebook server] +* link:{odhdocshome}/getting-started-with-open-data-hub/#starting-a-jupyter-notebook-server_get-started[Starting a Jupyter notebook server] endif::[] ifndef::upstream[] -* link:{rhoaidocshome}{default-format-url}/getting_started_with_{url-productname-long}/creating-a-project-workbench_get-started#launching-jupyter-and-starting-a-notebook-server_get-started[Launching Jupyter and starting a notebook server] +* link:{rhoaidocshome}{default-format-url}/getting_started_with_{url-productname-long}/creating-a-project-workbench_get-started#starting-a-jupyter-notebook-server_get-started[Starting a Jupyter notebook server] endif::[] diff --git a/modules/options-for-notebook-server-environments.adoc b/modules/options-for-notebook-server-environments.adoc index 7f960558..1975bf5c 100644 --- a/modules/options-for-notebook-server-environments.adoc +++ b/modules/options-for-notebook-server-environments.adoc @@ -475,8 +475,8 @@ a| * `AWS_ACCESS_KEY_ID` specifies your Access Key ID for Amazon Web Services. [role="_additional-resources"] .Additional resources ifdef::upstream[] -* link:{odhdocshome}/getting-started-with-open-data-hub/#launching-jupyter-and-starting-a-notebook-server_get-started[Launching Jupyter and starting a notebook server] +* link:{odhdocshome}/getting-started-with-open-data-hub/#starting-a-jupyter-notebook-server_get-started[Starting a Jupyter notebook server] endif::[] ifndef::upstream[] -* link:{rhoaidocshome}{default-format-url}/getting_started_with_{url-productname-long}/creating-a-project-workbench_get-started#launching-jupyter-and-starting-a-notebook-server_get-started[Launching Jupyter and starting a notebook server] +* link:{rhoaidocshome}{default-format-url}/getting_started_with_{url-productname-long}/creating-a-project-workbench_get-started#starting-a-jupyter-notebook-server_get-started[Starting a Jupyter notebook server] endif::[] \ No newline at end of file diff --git a/modules/removing-disabled-applications-from-open-data-hub.adoc b/modules/removing-disabled-applications.adoc similarity index 51% rename from modules/removing-disabled-applications-from-open-data-hub.adoc rename to modules/removing-disabled-applications.adoc index 4ad2d166..14ee1a74 100644 --- a/modules/removing-disabled-applications-from-open-data-hub.adoc +++ b/modules/removing-disabled-applications.adoc @@ -1,27 +1,26 @@ :_module-type: PROCEDURE [id='removing-disabled-applications_{context}'] -= Removing disabled applications from {productname-short} += Removing disabled applications from the dashboard [role='_abstract'] After your administrator has disabled your unused applications, you can manually remove them from the {productname-long} dashboard. Disabling and removing unused applications allows you to focus on the applications that you are most likely to use. .Prerequisites -* Ensure that you have logged in to {productname-long}. -ifdef::upstream,self-managed[] -* You have logged in to the {openshift-platform} web console. +* You are logged in to {productname-long}. + +ifndef::upstream[] +* Your administrator has disabled the application that you want to remove, as described in link:{rhoaidocshome}{default-format-url}/managing-resources/disabling-applications-connected_managing-resources[Disabling applications connected to {productname-short}]. endif::[] -ifdef::cloud-service[] -* You have logged in to the OpenShift web console. +ifdef::upstream[] +* Your administrator has disabled the application that you want to remove, as described in link:{odhdocshome}/managing-resources/#_disabling_applications_connected[Disabling applications connected to {productname-short}]. endif::[] -* Your administrator has previously disabled the application that you want to remove. .Procedure . In the {productname-short} interface, click *Enabled*. + -The *Enabled* page opens. Disabled applications are denoted with `Disabled` on the tile for the application. - +On the *Enabled* page, tiles for disabled applications are denoted with a `Disabled` label. . Click *Disabled* on the tile for the application that you want to remove. . Click the link to remove the application tile. diff --git a/modules/launching-jupyter-and-starting-a-notebook-server.adoc b/modules/starting-a-jupyter-notebook-server.adoc similarity index 68% rename from modules/launching-jupyter-and-starting-a-notebook-server.adoc rename to modules/starting-a-jupyter-notebook-server.adoc index 7257d60c..7b964caa 100644 --- a/modules/launching-jupyter-and-starting-a-notebook-server.adoc +++ b/modules/starting-a-jupyter-notebook-server.adoc @@ -1,13 +1,16 @@ :_module-type: PROCEDURE -[id='launching-jupyter-and-starting-a-notebook-server_{context}'] -= Launching Jupyter and starting a notebook server +[id='starting-a-jupyter-notebook-server_{context}'] += Starting a Jupyter notebook server [role='_abstract'] -Launch Jupyter and start a notebook server to start working with your notebooks. If you require extra power for use with large datasets, you can assign accelerators to your notebook server to optimize performance. +Jupyter is based on a server-client architecture. The Jupyter notebook server runs in a container on the Red Hat OpenShift cluster. The client is the JupyterLab interface that opens in your web browser on your local computer. However, all of the commands that you enter in JupyterLab are executed by the notebook server. This architecture allows you to interact through your local computer in a browser environment, while all processing occurs on the cluster. The cluster provides the benefits of larger available resources and security because the data being processed never leaves the cluster. + +From the Jupyter application tile, you can start a Jupyter notebook server. If you require extra power for use with large datasets, you can assign accelerators to your notebook server to optimize performance. .Prerequisites -* You have logged in to {productname-long}. +* You are logged in to {productname-long}. +* You are starting Jupyter for the first time or you stopped your notebook server. * You know the names and values you want to use for any environment variables in your notebook server environment, for example, `AWS_SECRET_ACCESS_KEY`. * If you want to work with a large data set, work with your administrator to proactively increase the storage capacity of your notebook server. If applicable, also consider assigning accelerators to your notebook server. @@ -27,12 +30,13 @@ endif::[] + If you have not previously authorized the `jupyter-nb-` service account to access your account, the *Authorize Access* page appears prompting you to provide authorization. Inspect the permissions selected by default, and click the *Allow selected permissions* button. + -If you credentials are accepted, the *Notebook server control panel* opens displaying the *Start a notebook server* page. +If your credentials are accepted, the *Notebook server control panel* opens displaying the *Start a notebook server* page. . Start a notebook server. + +.. In the *Notebook image* section, select the notebook image to use for your server. + -This is not required if you have previously opened Jupyter. +Different notebook images have different packages installed by default. Click the help icon (?) next to a notebook image name to view a list of its included packages. -.. In the *Notebook image* section, select the notebook image to use for your server. .. If the notebook image contains multiple versions, select the version of the notebook image from the *Versions* section. + [NOTE] @@ -60,28 +64,20 @@ The interface stores these variables so that you only need to enter them once. E ==== Select the *Secret* checkbox for variables with sensitive values that must remain private, such as passwords. ==== -.. Optional: Select the *Start server in current tab* checkbox if necessary. +.. Optional: Check *Start server in current tab*. .. Click *Start server*. + -The *Starting server* progress indicator appears. Click *Expand event log* to view additional information about the server creation process. Depending on the deployment size and resources you requested, starting the server can take up to several minutes. Click *Cancel* to cancel the server creation. +The *Starting server* progress indicator appears. Click *Expand event log* to view additional information about the server creation process. Depending on the deployment size and resources you requested, starting the server can take up to several minutes. Only click *Cancel* if you want to cancel the server creation. + After the server starts, you see one of the following behaviors: + -- -* If you previously selected the *Start server in current tab* checkbox, the JupyterLab interface opens in the current tab of your web browser. -* If you did not previously select the *Start server in current tab* checkbox, the *Starting server* dialog box prompts you to open the server in a new browser tab or in the current browser tab. -+ -The JupyterLab interface opens according to your selection. +* If you selected *Start server in current tab* in Step 7, the JupyterLab interface opens in the current tab of your web browser. +* If you did not select *Start server in current tab* in Step 7, the *Starting server* dialog box prompts you to open the server in a new browser tab or in the current browser tab. -- .Verification * The JupyterLab interface opens. -[role="_additional-resources"] -.Additional resources -ifndef::upstream[] -link:{rhoaidocshome}{default-format-url}/getting_started_with_{url-productname-long}/creating-a-project-workbench_get-started#options-for-notebook-server-environments_get-started[Options for notebook server environments]. -endif::[] - .Troubleshooting * If you see the "Unable to load notebook server configuration options" error message, contact your administrator so that they can review the logs associated with your Jupyter pod and determine further details about the problem. diff --git a/modules/starting-notebook-servers-owned-by-other-users.adoc b/modules/starting-notebook-servers-owned-by-other-users.adoc index c3d930f7..351d9979 100644 --- a/modules/starting-notebook-servers-owned-by-other-users.adoc +++ b/modules/starting-notebook-servers-owned-by-other-users.adoc @@ -11,17 +11,17 @@ Administrators can start a notebook server for another existing user from the Ju ifdef::upstream[] * You are part of the {openshift-platform} administrator group which requires the `cluster-admin` role on {openshift-platform}. For more information, see link:https://access.redhat.com/documentation/en-us/openshift_container_platform/{ocp-latest-version}/html/authentication_and_authorization/using-rbac#creating-cluster-admin_using-rbac[Creating a cluster admin]. -* You have launched the Jupyter application, as described in link:{odhdocshome}/getting-started-with-open-data-hub/#launching-jupyter-and-starting-a-notebook-server_get-started[Launching Jupyter and starting a notebook server]. +* You have launched the Jupyter application, as described in link:{odhdocshome}/getting-started-with-open-data-hub/#starting-a-jupyter-notebook-server_get-started[Starting a Jupyter notebook server]. endif::[] ifdef::self-managed[] * You are part of the {openshift-platform} administrator group. For more information, see link:{rhoaidocshome}{default-format-url}/installing_and_uninstalling_{url-productname-short}/installing-and-deploying-openshift-ai_install#adding-administrative-users-for-{openshift-platform-url}_install[Adding administrative users for {openshift-platform}]. -* You have launched the Jupyter application, as described in link:{rhoaidocshome}{default-format-url}/getting_started_with_{url-productname-long}/creating-a-project-workbench_get-started#launching-jupyter-and-starting-a-notebook-server_get-started[Launching Jupyter and starting a notebook server]. +* You have launched the Jupyter application, as described in link:{rhoaidocshome}{default-format-url}/getting_started_with_{url-productname-long}/creating-a-project-workbench_get-started#starting-a-jupyter-notebook-server_get-started[Starting a Jupyter notebook server]. endif::[] ifdef::cloud-service[] * You are part of the OpenShift Dedicated or Red Hat OpenShift Service on AWS (ROSA) administrator group. For more information, see link:{rhoaidocshome}{default-format-url}/installing_and_uninstalling_{url-productname-short}/installing-and-deploying-openshift-ai_install#adding-administrative-users-in-openshift_install[Adding administrative users]. -* You have launched the Jupyter application, as described in link:{rhoaidocshome}{default-format-url}/getting_started_with_{url-productname-long}/creating-a-project-workbench_get-started#launching-jupyter-and-starting-a-notebook-server_get-started[Launching Jupyter and starting a notebook server]. +* You have launched the Jupyter application, as described in link:{rhoaidocshome}{default-format-url}/getting_started_with_{url-productname-long}/creating-a-project-workbench_get-started#starting-a-jupyter-notebook-server_get-started[Starting a Jupyter notebook server]. endif::[] .Procedure diff --git a/modules/stopping-notebook-servers-owned-by-other-users.adoc b/modules/stopping-notebook-servers-owned-by-other-users.adoc index 04181e27..5766d6ef 100644 --- a/modules/stopping-notebook-servers-owned-by-other-users.adoc +++ b/modules/stopping-notebook-servers-owned-by-other-users.adoc @@ -20,15 +20,15 @@ ifdef::cloud-service[] endif::[] ifdef::upstream[] -* You have launched the Jupyter application, as described in link:{odhdocshome}/getting-started-with-open-data-hub/#launching-jupyter-and-starting-a-notebook-server_get-started[Launching Jupyter and starting a notebook server]. +* You have launched the Jupyter application, as described in link:{odhdocshome}/getting-started-with-open-data-hub/#starting-a-jupyter-notebook-server_get-started[Starting a Jupyter notebook server]. endif::[] ifdef::self-managed[] -* You have launched the Jupyter application, as described in link:{rhoaidocshome}{default-format-url}/getting_started_with_{url-productname-long}/creating-a-project-workbench_get-started#launching-jupyter-and-starting-a-notebook-server_get-started[Launching Jupyter and starting a notebook server]. +* You have launched the Jupyter application, as described in link:{rhoaidocshome}{default-format-url}/getting_started_with_{url-productname-long}/creating-a-project-workbench_get-started#starting-a-jupyter-notebook-server_get-started[Starting a Jupyter notebook server]. endif::[] ifdef::cloud-service[] -* You have launched the Jupyter application, as described in link:{rhoaidocshome}{default-format-url}/getting_started_with_{url-productname-long}/creating-a-project-workbench_get-started#launching-jupyter-and-starting-a-notebook-server_get-started[Launching Jupyter and starting a notebook server]. +* You have launched the Jupyter application, as described in link:{rhoaidocshome}{default-format-url}/getting_started_with_{url-productname-long}/creating-a-project-workbench_get-started#starting-a-jupyter-notebook-server_get-started[Starting a Jupyter notebook server]. endif::[] * The notebook server that you want to stop is running. diff --git a/modules/updating-notebook-server-settings-by-restarting-your-server.adoc b/modules/updating-notebook-server-settings-by-restarting-your-server.adoc index 580f1950..a846b7fd 100644 --- a/modules/updating-notebook-server-settings-by-restarting-your-server.adoc +++ b/modules/updating-notebook-server-settings-by-restarting-your-server.adoc @@ -9,7 +9,7 @@ You can update the settings on your notebook server by stopping and relaunching .Prerequisites * A running notebook server. -* Log in to Jupyter. +* Log in to JupyterLab. .Procedure . Click *File* -> *Hub Control Panel*. @@ -25,12 +25,3 @@ The *Start a notebook server* page opens. .Verification * The notebook server starts and contains your updated settings. - -[role="_additional-resources"] -.Additional resources -ifdef::upstream[] -* link:{odhdocshome}/getting-started-with-open-data-hub/#launching-jupyter-and-starting-a-notebook-server_get-started[Launching Jupyter and starting a notebook server] -endif::[] -ifndef::upstream[] -* link:{rhoaidocshome}{default-format-url}/getting_started_with_{url-productname-long}/creating-a-project-workbench_get-started#launching-jupyter-and-starting-a-notebook-server_get-started[Launching Jupyter and starting a notebook server] -endif::[] diff --git a/modules/uploading-an-existing-notebook-file-from-a-git-repository-using-jupyterlab.adoc b/modules/uploading-an-existing-notebook-file-from-a-git-repository-using-jupyterlab.adoc index 5eb8c937..5f64c10f 100644 --- a/modules/uploading-an-existing-notebook-file-from-a-git-repository-using-jupyterlab.adoc +++ b/modules/uploading-an-existing-notebook-file-from-a-git-repository-using-jupyterlab.adoc @@ -1,13 +1,13 @@ :_module-type: PROCEDURE [id='uploading-an-existing-notebook-file-from-a-git-repository-using-jupyterlab_{context}'] -= Uploading an existing notebook file from a Git repository using JupyterLab += Uploading an existing notebook file from a Git repository by using JupyterLab [role='_abstract'] You can use the JupyterLab user interface to clone a Git repository into your workspace to continue your work or integrate files from an external project. .Prerequisites -* A launched and running Jupyter server. +* A launched and running Jupyter notebook server. * Read access for the Git repository you want to clone. .Procedure diff --git a/modules/uploading-an-existing-notebook-file-from-a-git-repository-using-the-command-line-interface.adoc b/modules/uploading-an-existing-notebook-file-from-a-git-repository-using-the-command-line-interface.adoc index 121e136e..509e4b65 100644 --- a/modules/uploading-an-existing-notebook-file-from-a-git-repository-using-the-command-line-interface.adoc +++ b/modules/uploading-an-existing-notebook-file-from-a-git-repository-using-the-command-line-interface.adoc @@ -1,13 +1,13 @@ :_module-type: PROCEDURE [id='uploading-an-existing-notebook-file-from-a-git-repository-using-the-command-line-interface_{context}'] -= Uploading an existing notebook file from a Git repository using the command line interface += Uploading an existing notebook file from a Git repository by using the command line interface [role='_abstract'] You can use the command line interface to clone a Git repository into your workspace to continue your work or integrate files from an external project. .Prerequisites -* A launched and running Jupyter server. +* A launched and running Jupyter notebook server. .Procedure . Copy the HTTPS URL for the Git repository. diff --git a/modules/uploading-an-existing-notebook-file-from-local-storage.adoc b/modules/uploading-an-existing-notebook-file-from-local-storage.adoc index f8e972ab..a0def2e6 100644 --- a/modules/uploading-an-existing-notebook-file-from-local-storage.adoc +++ b/modules/uploading-an-existing-notebook-file-from-local-storage.adoc @@ -7,8 +7,8 @@ You can load an existing notebook from local storage into JupyterLab to continue work, or adapt a project for a new use case. .Prerequisites -* Credentials for logging in to Jupyter. -* A launched and running notebook server. +* Credentials for logging in to JupyterLab. +* A launched and running Jupyter notebook server. * A notebook file exists in your local storage. .Procedure diff --git a/modules/viewing-python-packages-installed-on-your-notebook-server.adoc b/modules/viewing-python-packages-installed-on-your-notebook-server.adoc index d8b50032..1dc23c9f 100644 --- a/modules/viewing-python-packages-installed-on-your-notebook-server.adoc +++ b/modules/viewing-python-packages-installed-on-your-notebook-server.adoc @@ -8,7 +8,7 @@ You can check which Python packages are installed on your notebook server and which version of the package you have by running the `pip` tool in a notebook cell. .Prerequisites -* Log in to Jupyter and open a notebook. +* Log in to JupyterLab and open a notebook. .Procedure diff --git a/working-on-data-science-projects.adoc b/working-on-data-science-projects.adoc index f853f4c0..0dd5424a 100644 --- a/working-on-data-science-projects.adoc +++ b/working-on-data-science-projects.adoc @@ -21,7 +21,7 @@ include::_artifacts/document-attributes-global.adoc[] include::assemblies/creating-and-importing-notebooks.adoc[leveloffset=+1] :context: nb-git -include::assemblies/collaborating-on-notebooks-using-git.adoc[leveloffset=+1] +include::assemblies/collaborating-on-notebooks-by-using-git.adoc[leveloffset=+1] :context: nb-server include::assemblies/working-on-data-science-projects.adoc[leveloffset=+1] From a500c59188016aeeee96ffb8981cc2a01589ce75 Mon Sep 17 00:00:00 2001 From: Melissa Flinn Date: Thu, 30 May 2024 19:41:48 -0400 Subject: [PATCH 2/5] odh-7074 fix title heading level --- managing-connected-applications.adoc | 5 +---- 1 file changed, 1 insertion(+), 4 deletions(-) diff --git a/managing-connected-applications.adoc b/managing-connected-applications.adoc index 8c0987f8..933f9909 100644 --- a/managing-connected-applications.adoc +++ b/managing-connected-applications.adoc @@ -13,14 +13,11 @@ include::_artifacts/document-attributes-global.adoc[] :compat-mode: :context: connected-apps -== Managing connected applications += Managing connected applications include::assemblies/enabling-removing-connected-applications.adoc[leveloffset=+1] -//include::assemblies/using-the-jupyter-application.adoc[leveloffset=+1] - - == Using the Jupyter application {productname-long} provides access to Jupyter as an enabled application for situations where, for example, you do not want users to have their own data science projects or you want to open a notebook that was developed outside of {productname-short} and has no dependencies on other environments. From 88bf05145b12cd46719403216762e8ade8236d96 Mon Sep 17 00:00:00 2001 From: Melissa Flinn Date: Fri, 31 May 2024 13:38:55 -0400 Subject: [PATCH 3/5] odh-7074 fix duplicate sections --- managing-connected-applications.adoc | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/managing-connected-applications.adoc b/managing-connected-applications.adoc index 933f9909..6a299fcb 100644 --- a/managing-connected-applications.adoc +++ b/managing-connected-applications.adoc @@ -30,8 +30,16 @@ endif::[] include::modules/starting-a-jupyter-notebook-server.adoc[leveloffset=+2] -include::assemblies/creating-and-importing-notebooks.adoc[leveloffset=+2] +=== Creating and importing notebooks +[role='_abstract'] +You can create a blank notebook or import a notebook from several different sources. + +include::modules/creating-a-new-notebook.adoc[leveloffset=+3] +include::modules/notebook-images-for-data-scientists.adoc[leveloffset=+3] +// include::modules/uploading-an-existing-notebook-file-from-a-file-URL.adoc[leveloffset=+2] + +include::modules/uploading-an-existing-notebook-file-from-local-storage.adoc[leveloffset=+3] include::assemblies/collaborating-on-notebooks-by-using-git.adoc[leveloffset=+2] From cb358e49e919ce82910cbb9599eafc3b647405c3 Mon Sep 17 00:00:00 2001 From: Melissa Flinn Date: Fri, 31 May 2024 14:14:26 -0400 Subject: [PATCH 4/5] odh-7074 rename new guide --- modules/disabling-applications-connected.adoc | 2 +- ...cations.adoc => working-with-connected-applications.adoc | 6 +++--- 2 files changed, 4 insertions(+), 4 deletions(-) rename managing-connected-applications.adoc => working-with-connected-applications.adoc (95%) diff --git a/modules/disabling-applications-connected.adoc b/modules/disabling-applications-connected.adoc index 0d4e180b..a25eb4d4 100644 --- a/modules/disabling-applications-connected.adoc +++ b/modules/disabling-applications-connected.adoc @@ -8,7 +8,7 @@ You can disable applications and components so that they do not appear on the {p Disabling unused applications allows your data scientists to manually remove these application tiles from their {productname-short} dashboard so that they can focus on the applications that they are most likely to use. ifndef::upstream[] -See link:{rhoaidocshome}{default-format-url}/managing-connected-applications/removing-disabled-applications_connected-apps[Removing disabled applications from the dashboard] for more information about manually removing application tiles. +See link:{rhoaidocshome}{default-format-url}/working-with-connected-applications/removing-disabled-applications_connected-apps[Removing disabled applications from the dashboard] for more information about manually removing application tiles. endif::[] [IMPORTANT] diff --git a/managing-connected-applications.adoc b/working-with-connected-applications.adoc similarity index 95% rename from managing-connected-applications.adoc rename to working-with-connected-applications.adoc index 6a299fcb..f7b6f2c0 100644 --- a/managing-connected-applications.adoc +++ b/working-with-connected-applications.adoc @@ -1,7 +1,7 @@ --- layout: docs -title: Managing connected applications -permalink: /docs/managing-connected-applications +title: Working with connected applications +permalink: /docs/working-with-connected-applications custom_css: asciidoc.css --- @@ -13,7 +13,7 @@ include::_artifacts/document-attributes-global.adoc[] :compat-mode: :context: connected-apps -= Managing connected applications +== Working with connected applications include::assemblies/enabling-removing-connected-applications.adoc[leveloffset=+1] From f6944c11399df91285df555319d2e4c1c51ab417 Mon Sep 17 00:00:00 2001 From: Melissa Flinn Date: Fri, 31 May 2024 14:18:19 -0400 Subject: [PATCH 5/5] odh-7074 fix title heading --- working-with-connected-applications.adoc | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/working-with-connected-applications.adoc b/working-with-connected-applications.adoc index f7b6f2c0..a778a1f0 100644 --- a/working-with-connected-applications.adoc +++ b/working-with-connected-applications.adoc @@ -13,7 +13,7 @@ include::_artifacts/document-attributes-global.adoc[] :compat-mode: :context: connected-apps -== Working with connected applications += Working with connected applications include::assemblies/enabling-removing-connected-applications.adoc[leveloffset=+1]