Tutor-Discovery Program Issue

Hi,

I have a local installation of tutor 15.3.4 with the following plugins: tutor-forum, tutor-mfe and tutor-discovery. After many problems due to lack of space on my computer, the forum and mfe plugins seem to work fine.
On the other hand, I want to create programs with tutor-discovery and I have more difficulty. After creating my program in discovery admin panel (http://discovery.local.overhang.io/admin/), my program is not visible in my catalog at: http://local.overhang.io/

I think this is because I did not “cache the programs”. When I execute the command to do so:
tutor local run lms ./manage.py lms cache_programs

I get the error:

urllib3.exceptions.MaxRetryError: HTTPConnectionPool(host='discovery.local.overhang.io', port=8381): Max retries exceeded with url: /api/v1/pathways/?exclude_utm=1&page=1 (Caused by NewConnectionError('<urllib3.connection.HTTPConnection object at 0x7fed6e98a4f0>: Failed to establish a new connection: [Errno 111] Connection refused'))

And indeed discovery.local.overhang.io:8381 displays “connection refused” in a browser.

Here are the logs I got after running: tutor local logs discovery
discovery-logs.txt (6.4 KB)

Could you help me resolve this issue?

Thanks

Hi @carodak

Had you run the first command create_catalog_integrations mentioned in
tutor-discovery readme.

After that when you run cache_program command, courses should appear at: http://local.overhang.io/dashboard. I have checked and programs are appearing for me in LMS.

Although I also faced the same error as you, but the programs are being synced to LMS.
Let me know in the reply if programs are still not appearing in the LMS.

I have created the Github issue for the above error on running cache_programs command.

Hi @carodak

I have investigated the above error. As programs are caching to LMS by using these commands .i.e. create_catalog_integrations
cache_program

I have closed the issue that I created on Github with this reason.

Let me know if above commands work for you.

Hi @FarazM,

Thanks for your answer. Yes, I had run all the comands mentioned in the readme:

tutor local run discovery ./manage.py refresh_course_metadata --partner_code=openedx
tutor local run discovery ./manage.py update_index --disable-change-limit
tutor local run lms ./manage.py lms create_catalog_integrations --enabled \
    --internal_api_url="" \
    --service_username=lms_catalog_service_user

After I ran:

tutor local run lms ./manage.py lms create_catalog_integrations --enabled \
    --internal_api_url="" \
    --service_username=lms_catalog_service_user

I got:

(base) macbookpro@macbooks-mbp-2 ~ % tutor local run lms ./manage.py lms create_catalog_integrations --enabled \            
    --internal_api_url="" \
    --service_username=lms_catalog_service_user
docker-compose -f '/Users/macbookpro/Library/Application Support/tutor/env/local/docker-compose.yml' -f '/Users/macbookpro/Library/Application Support/tutor/env/local/docker-compose.prod.yml' -f '/Users/macbookpro/Library/Application Support/tutor/env/local/docker-compose.tmp.yml' -f '/Users/macbookpro/Library/Application Support/tutor/env/local/docker-compose.override.yml' --project-name tutor_local run --rm lms ./manage.py lms create_catalog_integrations --enabled --internal_api_url= --service_username=lms_catalog_service_user
[+] Running 10/0
 ✔ Container tutor_local-lms-permissions-1            Created                                                                                                                                                                                                                 0.0s 
 ✔ Container tutor_local-redis-permissions-1          Created                                                                                                                                                                                                                 0.0s 
 ✔ Container tutor_local-smtp-1                       Running                                                                                                                                                                                                                 0.0s 
 ✔ Container tutor_local-mongodb-permissions-1        Created                                                                                                                                                                                                                 0.0s 
 ✔ Container tutor_local-mysql-1                      Running                                                                                                                                                                                                                 0.0s 
 ✔ Container tutor_local-redis-1                      Running                                                                                                                                                                                                                 0.0s 
 ✔ Container tutor_local-elasticsearch-permissions-1  Created                                                                                                                                                                                                                 0.0s 
 ✔ Container tutor_local-mongodb-1                    Running                                                                                                                                                                                                                 0.0s 
 ✔ Container tutor_local-elasticsearch-1              Running                                                                                                                                                                                                                 0.0s 
 ✔ Container tutor_local-forum-1                      Running                                                                                                                                                                                                                 0.0s 
[+] Running 4/4
 ✔ Container tutor_local-mongodb-permissions-1        Started                                                                                                                                                                                                                 1.4s 
 ✔ Container tutor_local-redis-permissions-1          Started                                                                                                                                                                                                                 1.3s 
 ✔ Container tutor_local-elasticsearch-permissions-1  Started                                                                                                                                                                                                                 1.4s 
 ✔ Container tutor_local-lms-permissions-1            Started                                                                                                                                                                                                                 1.4s 
2023-06-05 16:06:22,111 WARNING 1 [py.warnings] [user None] [ip None] warnings.py:109 - /openedx/venv/lib/python3.8/site-packages/boto/plugin.py:40: DeprecationWarning: the imp module is deprecated in favour of importlib; see the module's documentation for alternative uses
  import imp

2023-06-05 16:06:22,250 WARNING 1 [py.warnings] [user None] [ip None] warnings.py:109 - /openedx/venv/lib/python3.8/site-packages/botocore/vendored/requests/packages/urllib3/_collections.py:1: DeprecationWarning: Using or importing the ABCs from 'collections' instead of from 'collections.abc' is deprecated since Python 3.3, and in 3.10 it will stop working
  from collections import Mapping, MutableMapping

2023-06-05 16:06:24,094 WARNING 1 [py.warnings] [user None] [ip None] warnings.py:109 - /openedx/edx-platform/openedx/core/types/admin.py:49: DeprecationWarning: Django 3.2+ available: the _admin_display method and the AdminMethodclass should be removed from openedx.core.types
  warnings.warn(

System check identified some issues:

WARNINGS:
?: (2_0.W001) Your URL pattern 'edx_name_affirmation/v1/verified_name/(?P<verified_name_id>\d+)$' [name='verified_name_by_id'] has a route that contains '(?P<', begins with a '^', or ends with a '$'. This was likely an oversight when migrating to django.urls.path().
consent.DataSharingConsent.granted: (fields.W903) NullBooleanField is deprecated. Support for it (except in historical migrations) will be removed in Django 4.0.
	HINT: Use BooleanField(null=True) instead.
consent.HistoricalDataSharingConsent.granted: (fields.W903) NullBooleanField is deprecated. Support for it (except in historical migrations) will be removed in Django 4.0.
	HINT: Use BooleanField(null=True) instead.
Successfully created CatalogIntegration enabled=True url= service_username=lms_catalog_service_user

Then I tried to cache the programs:

(base) macbookpro@macbooks-mbp-2 ~ % tutor local run lms ./manage.py lms cache_programs
docker-compose -f '/Users/macbookpro/Library/Application Support/tutor/env/local/docker-compose.yml' -f '/Users/macbookpro/Library/Application Support/tutor/env/local/docker-compose.prod.yml' -f '/Users/macbookpro/Library/Application Support/tutor/env/local/docker-compose.tmp.yml' -f '/Users/macbookpro/Library/Application Support/tutor/env/local/docker-compose.override.yml' --project-name tutor_local run --rm lms ./manage.py lms cache_programs
[+] Running 10/0
 ✔ Container tutor_local-mysql-1                      Running                                                                                                                                                                          0.0s 
 ✔ Container tutor_local-mongodb-permissions-1        Created                                                                                                                                                                          0.0s 
 ✔ Container tutor_local-elasticsearch-permissions-1  Created                                                                                                                                                                          0.0s 
 ✔ Container tutor_local-redis-permissions-1          Created                                                                                                                                                                          0.0s 
 ✔ Container tutor_local-smtp-1                       Running                                                                                                                                                                          0.0s 
 ✔ Container tutor_local-lms-permissions-1            Created                                                                                                                                                                          0.0s 
 ✔ Container tutor_local-redis-1                      Running                                                                                                                                                                          0.0s 
 ✔ Container tutor_local-elasticsearch-1              Running                                                                                                                                                                          0.0s 
 ✔ Container tutor_local-mongodb-1                    Running                                                                                                                                                                          0.0s 
 ✔ Container tutor_local-forum-1                      Running                                                                                                                                                                          0.0s 
[+] Running 4/4
 ✔ Container tutor_local-lms-permissions-1            Started                                                                                                                                                                          1.9s 
 ✔ Container tutor_local-mongodb-permissions-1        Started                                                                                                                                                                          2.0s 
 ✔ Container tutor_local-redis-permissions-1          Started                                                                                                                                                                          1.9s 
 ✔ Container tutor_local-elasticsearch-permissions-1  Started                                                                                                                                                                          1.9s 
2023-06-05 16:02:12,676 WARNING 1 [py.warnings] [user None] [ip None] warnings.py:109 - /openedx/venv/lib/python3.8/site-packages/boto/plugin.py:40: DeprecationWarning: the imp module is deprecated in favour of importlib; see the module's documentation for alternative uses
  import imp

2023-06-05 16:02:12,830 WARNING 1 [py.warnings] [user None] [ip None] warnings.py:109 - /openedx/venv/lib/python3.8/site-packages/botocore/vendored/requests/packages/urllib3/_collections.py:1: DeprecationWarning: Using or importing the ABCs from 'collections' instead of from 'collections.abc' is deprecated since Python 3.3, and in 3.10 it will stop working
  from collections import Mapping, MutableMapping

2023-06-05 16:02:16,278 WARNING 1 [py.warnings] [user None] [ip None] warnings.py:109 - /openedx/edx-platform/openedx/core/types/admin.py:49: DeprecationWarning: Django 3.2+ available: the _admin_display method and the AdminMethodclass should be removed from openedx.core.types
  warnings.warn(

System check identified some issues:

WARNINGS:
?: (2_0.W001) Your URL pattern 'edx_name_affirmation/v1/verified_name/(?P<verified_name_id>\d+)$' [name='verified_name_by_id'] has a route that contains '(?P<', begins with a '^', or ends with a '$'. This was likely an oversight when migrating to django.urls.path().
consent.DataSharingConsent.granted: (fields.W903) NullBooleanField is deprecated. Support for it (except in historical migrations) will be removed in Django 4.0.
	HINT: Use BooleanField(null=True) instead.
consent.HistoricalDataSharingConsent.granted: (fields.W903) NullBooleanField is deprecated. Support for it (except in historical migrations) will be removed in Django 4.0.
	HINT: Use BooleanField(null=True) instead.
2023-06-05 16:02:27,229 INFO 1 [openedx.core.djangoapps.catalog.management.commands.cache_programs] [user None] [ip None] cache_programs.py:51 - populate-multitenant-programs switch is ON
2023-06-05 16:02:27,277 INFO 1 [openedx.core.djangoapps.catalog.management.commands.cache_programs] [user None] [ip None] cache_programs.py:74 - Skipping site example.com. No configuration.
2023-06-05 16:02:27,318 INFO 1 [openedx.core.djangoapps.catalog.management.commands.cache_programs] [user None] [ip None] cache_programs.py:150 - Requesting program UUIDs for local.overhang.io.
2023-06-05 16:02:27,473 INFO 1 [openedx.core.djangoapps.catalog.management.commands.cache_programs] [user None] [ip None] cache_programs.py:158 - Received 1 UUIDs for site local.overhang.io
2023-06-05 16:02:27,477 INFO 1 [openedx.core.djangoapps.catalog.management.commands.cache_programs] [user None] [ip None] cache_programs.py:170 - Requesting details for program b4063d9a-3da8-4163-97de-79b592997d78.
2023-06-05 16:02:28,209 INFO 1 [openedx.core.djangoapps.catalog.management.commands.cache_programs] [user None] [ip None] cache_programs.py:190 - Requesting pathways for local.overhang.io.
2023-06-05 16:02:28,243 ERROR 1 [openedx.core.djangoapps.catalog.management.commands.cache_programs] [user None] [ip None] cache_programs.py:201 - Failed to retrieve pathways for site: local.overhang.io.
Traceback (most recent call last):
  File "/openedx/edx-platform/openedx/core/djangoapps/catalog/management/commands/cache_programs.py", line 196, in get_pathways
    response.raise_for_status()
  File "/openedx/venv/lib/python3.8/site-packages/requests/models.py", line 1021, in raise_for_status
    raise HTTPError(http_error_msg, response=self)
requests.exceptions.HTTPError: 403 Client Error: Forbidden for url: http://discovery.local.overhang.io/api/v1/pathways/?exclude_utm=1&page=1
2023-06-05 16:02:28,261 INFO 1 [openedx.core.djangoapps.catalog.management.commands.cache_programs] [user None] [ip None] cache_programs.py:206 - Received 0 pathways for site local.overhang.io
2023-06-05 16:02:28,263 INFO 1 [openedx.core.djangoapps.catalog.management.commands.cache_programs] [user None] [ip None] cache_programs.py:103 - Caching UUIDs for 1 programs for site local.overhang.io.
2023-06-05 16:02:28,266 INFO 1 [openedx.core.djangoapps.catalog.management.commands.cache_programs] [user None] [ip None] cache_programs.py:110 - Caching ids for 0 pathways for site local.overhang.io.
2023-06-05 16:02:28,281 INFO 1 [openedx.core.djangoapps.catalog.management.commands.cache_programs] [user None] [ip None] cache_programs.py:150 - Requesting program UUIDs for local.overhang.io:8000.
2023-06-05 16:02:28,287 ERROR 1 [openedx.core.djangoapps.catalog.management.commands.cache_programs] [user None] [ip None] cache_programs.py:155 - Failed to retrieve program UUIDs for site: local.overhang.io:8000.
Traceback (most recent call last):
  File "/openedx/venv/lib/python3.8/site-packages/urllib3/connection.py", line 174, in _new_conn
    conn = connection.create_connection(
  File "/openedx/venv/lib/python3.8/site-packages/urllib3/util/connection.py", line 95, in create_connection
    raise err
  File "/openedx/venv/lib/python3.8/site-packages/urllib3/util/connection.py", line 85, in create_connection
    sock.connect(sa)
ConnectionRefusedError: [Errno 111] Connection refused

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "/openedx/venv/lib/python3.8/site-packages/urllib3/connectionpool.py", line 703, in urlopen
    httplib_response = self._make_request(
  File "/openedx/venv/lib/python3.8/site-packages/urllib3/connectionpool.py", line 398, in _make_request
    conn.request(method, url, **httplib_request_kw)
  File "/openedx/venv/lib/python3.8/site-packages/urllib3/connection.py", line 239, in request
    super(HTTPConnection, self).request(method, url, body=body, headers=headers)
  File "/opt/pyenv/versions/3.8.12/lib/python3.8/http/client.py", line 1256, in request
    self._send_request(method, url, body, headers, encode_chunked)
  File "/opt/pyenv/versions/3.8.12/lib/python3.8/http/client.py", line 1302, in _send_request
    self.endheaders(body, encode_chunked=encode_chunked)
  File "/opt/pyenv/versions/3.8.12/lib/python3.8/http/client.py", line 1251, in endheaders
    self._send_output(message_body, encode_chunked=encode_chunked)
  File "/opt/pyenv/versions/3.8.12/lib/python3.8/http/client.py", line 1011, in _send_output
    self.send(msg)
  File "/opt/pyenv/versions/3.8.12/lib/python3.8/http/client.py", line 951, in send
    self.connect()
  File "/openedx/venv/lib/python3.8/site-packages/urllib3/connection.py", line 205, in connect
    conn = self._new_conn()
  File "/openedx/venv/lib/python3.8/site-packages/urllib3/connection.py", line 186, in _new_conn
    raise NewConnectionError(
urllib3.exceptions.NewConnectionError: <urllib3.connection.HTTPConnection object at 0x7f150fde7c70>: Failed to establish a new connection: [Errno 111] Connection refused

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "/openedx/venv/lib/python3.8/site-packages/requests/adapters.py", line 489, in send
    resp = conn.urlopen(
  File "/openedx/venv/lib/python3.8/site-packages/urllib3/connectionpool.py", line 787, in urlopen
    retries = retries.increment(
  File "/openedx/venv/lib/python3.8/site-packages/urllib3/util/retry.py", line 592, in increment
    raise MaxRetryError(_pool, url, error or ResponseError(cause))
urllib3.exceptions.MaxRetryError: HTTPConnectionPool(host='discovery.local.overhang.io', port=8381): Max retries exceeded with url: /api/v1/programs/?exclude_utm=1&status=active&status=retired&uuids_only=1 (Caused by NewConnectionError('<urllib3.connection.HTTPConnection object at 0x7f150fde7c70>: Failed to establish a new connection: [Errno 111] Connection refused'))

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "/openedx/edx-platform/openedx/core/djangoapps/catalog/management/commands/cache_programs.py", line 151, in get_site_program_uuids
    response = client.get(api_url, params=querystring)
  File "/openedx/venv/lib/python3.8/site-packages/requests/sessions.py", line 600, in get
    return self.request("GET", url, **kwargs)
  File "/openedx/venv/lib/python3.8/site-packages/requests/sessions.py", line 587, in request
    resp = self.send(prep, **send_kwargs)
  File "/openedx/venv/lib/python3.8/site-packages/requests/sessions.py", line 701, in send
    r = adapter.send(request, **kwargs)
  File "/openedx/venv/lib/python3.8/site-packages/requests/adapters.py", line 565, in send
    raise ConnectionError(e, request=request)
requests.exceptions.ConnectionError: HTTPConnectionPool(host='discovery.local.overhang.io', port=8381): Max retries exceeded with url: /api/v1/programs/?exclude_utm=1&status=active&status=retired&uuids_only=1 (Caused by NewConnectionError('<urllib3.connection.HTTPConnection object at 0x7f150fde7c70>: Failed to establish a new connection: [Errno 111] Connection refused'))
2023-06-05 16:02:28,303 INFO 1 [openedx.core.djangoapps.catalog.management.commands.cache_programs] [user None] [ip None] cache_programs.py:158 - Received 0 UUIDs for site local.overhang.io:8000
2023-06-05 16:02:28,306 INFO 1 [openedx.core.djangoapps.catalog.management.commands.cache_programs] [user None] [ip None] cache_programs.py:190 - Requesting pathways for local.overhang.io:8000.
2023-06-05 16:02:28,312 ERROR 1 [openedx.core.djangoapps.catalog.management.commands.cache_programs] [user None] [ip None] cache_programs.py:201 - Failed to retrieve pathways for site: local.overhang.io:8000.
Traceback (most recent call last):
  File "/openedx/venv/lib/python3.8/site-packages/urllib3/connection.py", line 174, in _new_conn
    conn = connection.create_connection(
  File "/openedx/venv/lib/python3.8/site-packages/urllib3/util/connection.py", line 95, in create_connection
    raise err
  File "/openedx/venv/lib/python3.8/site-packages/urllib3/util/connection.py", line 85, in create_connection
    sock.connect(sa)
ConnectionRefusedError: [Errno 111] Connection refused

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "/openedx/venv/lib/python3.8/site-packages/urllib3/connectionpool.py", line 703, in urlopen
    httplib_response = self._make_request(
  File "/openedx/venv/lib/python3.8/site-packages/urllib3/connectionpool.py", line 398, in _make_request
    conn.request(method, url, **httplib_request_kw)
  File "/openedx/venv/lib/python3.8/site-packages/urllib3/connection.py", line 239, in request
    super(HTTPConnection, self).request(method, url, body=body, headers=headers)
  File "/opt/pyenv/versions/3.8.12/lib/python3.8/http/client.py", line 1256, in request
    self._send_request(method, url, body, headers, encode_chunked)
  File "/opt/pyenv/versions/3.8.12/lib/python3.8/http/client.py", line 1302, in _send_request
    self.endheaders(body, encode_chunked=encode_chunked)
  File "/opt/pyenv/versions/3.8.12/lib/python3.8/http/client.py", line 1251, in endheaders
    self._send_output(message_body, encode_chunked=encode_chunked)
  File "/opt/pyenv/versions/3.8.12/lib/python3.8/http/client.py", line 1011, in _send_output
    self.send(msg)
  File "/opt/pyenv/versions/3.8.12/lib/python3.8/http/client.py", line 951, in send
    self.connect()
  File "/openedx/venv/lib/python3.8/site-packages/urllib3/connection.py", line 205, in connect
    conn = self._new_conn()
  File "/openedx/venv/lib/python3.8/site-packages/urllib3/connection.py", line 186, in _new_conn
    raise NewConnectionError(
urllib3.exceptions.NewConnectionError: <urllib3.connection.HTTPConnection object at 0x7f15101b6430>: Failed to establish a new connection: [Errno 111] Connection refused

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "/openedx/venv/lib/python3.8/site-packages/requests/adapters.py", line 489, in send
    resp = conn.urlopen(
  File "/openedx/venv/lib/python3.8/site-packages/urllib3/connectionpool.py", line 787, in urlopen
    retries = retries.increment(
  File "/openedx/venv/lib/python3.8/site-packages/urllib3/util/retry.py", line 592, in increment
    raise MaxRetryError(_pool, url, error or ResponseError(cause))
urllib3.exceptions.MaxRetryError: HTTPConnectionPool(host='discovery.local.overhang.io', port=8381): Max retries exceeded with url: /api/v1/pathways/?exclude_utm=1&page=1 (Caused by NewConnectionError('<urllib3.connection.HTTPConnection object at 0x7f15101b6430>: Failed to establish a new connection: [Errno 111] Connection refused'))

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "/openedx/edx-platform/openedx/core/djangoapps/catalog/management/commands/cache_programs.py", line 195, in get_pathways
    response = client.get(api_url, params=dict(exclude_utm=1, page=next_page))
  File "/openedx/venv/lib/python3.8/site-packages/requests/sessions.py", line 600, in get
    return self.request("GET", url, **kwargs)
  File "/openedx/venv/lib/python3.8/site-packages/requests/sessions.py", line 587, in request
    resp = self.send(prep, **send_kwargs)
  File "/openedx/venv/lib/python3.8/site-packages/requests/sessions.py", line 701, in send
    r = adapter.send(request, **kwargs)
  File "/openedx/venv/lib/python3.8/site-packages/requests/adapters.py", line 565, in send
    raise ConnectionError(e, request=request)
requests.exceptions.ConnectionError: HTTPConnectionPool(host='discovery.local.overhang.io', port=8381): Max retries exceeded with url: /api/v1/pathways/?exclude_utm=1&page=1 (Caused by NewConnectionError('<urllib3.connection.HTTPConnection object at 0x7f15101b6430>: Failed to establish a new connection: [Errno 111] Connection refused'))
2023-06-05 16:02:28,318 INFO 1 [openedx.core.djangoapps.catalog.management.commands.cache_programs] [user None] [ip None] cache_programs.py:206 - Received 0 pathways for site local.overhang.io:8000
2023-06-05 16:02:28,321 INFO 1 [openedx.core.djangoapps.catalog.management.commands.cache_programs] [user None] [ip None] cache_programs.py:103 - Caching UUIDs for 0 programs for site local.overhang.io:8000.
2023-06-05 16:02:28,326 INFO 1 [openedx.core.djangoapps.catalog.management.commands.cache_programs] [user None] [ip None] cache_programs.py:110 - Caching ids for 0 pathways for site local.overhang.io:8000.
2023-06-05 16:02:28,333 INFO 1 [openedx.core.djangoapps.catalog.management.commands.cache_programs] [user None] [ip None] cache_programs.py:116 - Caching details for 1 programs.
2023-06-05 16:02:28,342 INFO 1 [openedx.core.djangoapps.catalog.management.commands.cache_programs] [user None] [ip None] cache_programs.py:119 - Caching details for 0 pathways.
2023-06-05 16:02:28,347 INFO 1 [openedx.core.djangoapps.catalog.management.commands.cache_programs] [user None] [ip None] cache_programs.py:122 - Caching programs uuids for 0 courses.
2023-06-05 16:02:28,350 INFO 1 [openedx.core.djangoapps.catalog.management.commands.cache_programs] [user None] [ip None] cache_programs.py:125 - Caching programs uuids for 1 catalog courses.
2023-06-05 16:02:28,357 INFO 1 [openedx.core.djangoapps.catalog.management.commands.cache_programs] [user None] [ip None] cache_programs.py:128 - Caching program UUIDs by 1 program types.
2023-06-05 16:02:28,363 INFO 1 [openedx.core.djangoapps.catalog.management.commands.cache_programs] [user None] [ip None] cache_programs.py:131 - Caching program UUIDs by 1 program type slugs.
2023-06-05 16:02:28,368 INFO 1 [openedx.core.djangoapps.catalog.management.commands.cache_programs] [user None] [ip None] cache_programs.py:134 - Caching programs uuids for 0 organizations
Error: Command failed with status 1: docker-compose -f /Users/macbookpro/Library/Application Support/tutor/env/local/docker-compose.yml -f /Users/macbookpro/Library/Application Support/tutor/env/local/docker-compose.prod.yml -f /Users/macbookpro/Library/Application Support/tutor/env/local/docker-compose.tmp.yml -f /Users/macbookpro/Library/Application Support/tutor/env/local/docker-compose.override.yml --project-name tutor_local run --rm lms ./manage.py lms cache_programs

And nothing appeared in http://local.overhang.io

Hi @carodak

Is your lms_catalog_service_user in LMS is staff user? If not then make it staff user.
Can u please check if the status of your program is active and the partner in your program should be selected ‘Open edx’ as you are running tutor local launch? Check these settings and then run the commands.

Hi @FarazM,
Thanks for helping me. I have more of a developer background, I am not yet familiar with sysadmin tasks and server setup.

I added lms_catalog_service_user as a staff user using:

tutor local run lms ./manage.py lms manage_user lms_catalog_service_user lms_catalog_service_user@openedx --staff --superuser --unusable-password

Despite attempting to cache the programs, I encountered the same issue, and the programs are still not visible on: http://local.overhang.io
My program is active and the selected partner is open edx.

I tried loading a backup and reinstalling the discovery plugin, but it did not resolve the issue.

Regarding discovery, within the admin panel, I created a program type, a program, and a course within that program. I wonder if there are any additional steps I should take. I noticed there is a catalog tab that I have not explored, and I also do not have an organization. I have not made any changes to the partners either.

Hi @carodak

Did you used http://studio.local.overhang.io/home/ to make courses??
Discovery is used to make programs. Courses are made in CMS. These courses will automatically appear in LMS.
After that when you run tutor local run discovery ./manage.py refresh_course_metadata --partner_code=openedx command, courses will also appear in discovey admin panel.

Let me know.

Hi @FarazM!

Thanks, it’s working better now! I do have the name of the program on my dashboard!

But when I click on the program’s name it does not lead me to an accessible page:

And I don’t see the program information in the catalog:

I’d also like to have a catalog for browsing programs instead of courses if you have any insights about how to enable this feature.

Best,

1 Like

I didn’t see any rules against doublon so I’ll bump this topic as I am still looking for an answer regarding my screenshots above and the following issues:

  • When I click on the program’s name in my dashboard it does not lead me to an accessible page
  • I only have a course catalog, not a program catalog

@FarazM Do you have any insights on this?

At worst, I suppose I could create these pages myself, but if the option already exists, it would save me a lot of time.

Thanks,

Go LMS admin panel > programApiconfig model > add an entry of /programs and enable it.
Hope so it will answer your query.

1 Like

Hello, i have a similar issue: i made all the suggested steps, the programs tab appears in the learner dashboard but the url seems to be broken. The url for programs menu is apps.mydomain.com/dashboard/programs while it should be mydomain.com/dashboard/programs. Do you have any suggestions on how to fix this issue?
Thank you.
Best,
Robert

1 Like

Hi, the instructions on tutor-discovery repo’s README mention this GitHub - overhangio/tutor-discovery: Course Discovery plugin for Tutor.

Hi @FarazM sorry to reply on such an old topic but here you say that Discovery is for programs and Studio for creating courses. But I need to create courses using Discovery in order to use Credentials, according to the github readme of Credentials. I created a course with Discovery but it doesnt show up in my courses. Is there a step i’m missing? Thanks in advance

Only Courses created and published through CMS(studio) will appear in my courses. Why do you need to create courses in discovery? Instead create a course in studio and run refresh_course_metadata and respective commands as mentioned in readme of tutor-discovery, Courses will also appear in discovery.