overhangio / tutor

The Docker-based Open edX distribution designed for peace of mind
https://docs.tutor.overhang.io/
GNU Affero General Public License v3.0
916 stars 436 forks source link

Issue in enabling ecommerce[and discovery] #325

Closed shashikiranraifox closed 4 years ago

shashikiranraifox commented 4 years ago

Dear All, I tried to enable ecommerce plugin using the following commands:

$ tutor plugins enable discovery ecommerce 
$ tutor config save
$ tutor local quickstart

I referred the documentation under: https://docs.tutor.overhang.io/plugins.html https://pypi.org/project/tutor-ecommerce/

The above commands fail with errors. Below is my error Log: Note: I did notice a duplicate entry error in the log. I Tried removing all the Oauth2 client entries for discovery service and ran the same commands but still the issue persists.

2020-05-13 09:07:49,574 WARNING 14 [enterprise.utils] utils.py:50 - Could not import Registry from third_party_auth.provider
2020-05-13 09:07:49,575 WARNING 14 [enterprise.utils] utils.py:51 - cannot import name _LTI_BACKENDS
Operations to perform:
  Apply all migrations: admin, api_admin, assessment, auth, badges, block_structure, bookmarks, branding, bulk_email, catalog, celery_utils, certificates, commerce, completion, consent, content_type_gating, contentserver, contenttypes, cors_csrf, course_action_state, course_duration_limits, course_goals, course_groups, course_modes, course_overviews, courseware, crawlers, credentials, credit, dark_lang, database_fixups, degreed, django_comment_common, django_notify, django_openid_auth, djcelery, edx_oauth2_provider, edx_proctoring, edxval, email_marketing, embargo, enterprise, entitlements, experiments, external_auth, figures, grades, instructor_task, integrated_channel, lms_xblock, microsite_configuration, milestones, mobile_api, notes, oauth2, oauth2_provider, oauth_dispatch, oauth_provider, organizations, programs, redirects, rss_proxy, sap_success_factors, schedules, self_paced, sessions, shoppingcart, site_configuration, sites, social_django, splash, static_replace, status, student, submissions, survey, teams, theming, third_party_auth, track, user_api, user_authn, util, verified_track_content, verify_student, video_config, video_pipeline, waffle, waffle_utils, wiki, workflow, xapi, xblock_django
Running migrations:
  No migrations to apply.
WARNING:py.warnings:/openedx/edx-platform/lms/djangoapps/courseware/__init__.py:5: DeprecationWarning: Importing 'lms.djangoapps.courseware' as 'courseware' is no longer supported
  warnings.warn("Importing 'lms.djangoapps.courseware' as 'courseware' is no longer supported", DeprecationWarning)

2020-05-13 09:08:20,469 WARNING 128 [enterprise.utils] utils.py:50 - Could not import Registry from third_party_auth.provider
2020-05-13 09:08:20,469 WARNING 128 [enterprise.utils] utils.py:51 - cannot import name _LTI_BACKENDS
{
    "name": "", 
    "url": "http://androidapp.com", 
    "logout_uri": null, 
    "redirect_uri": "http://androidapp.com/redirect", 
    "client_id": "android", 
    "user": null, 
    "client_type": 1, 
    "client_secret": "lKMMMN5g9sEYhlLa4kfZ39qj"
}
Initialising cms...
docker-compose -f /home/raifox/.local/share/tutor/env/local/docker-compose.yml --project-name tutor_local -f /home/raifox/.local/share/tutor/env/local/docker-compose.jobs.yml run --rm cms-job sh -e -c dockerize -wait tcp://mysql:3306 -timeout 20s

export DJANGO_SETTINGS_MODULE=$SERVICE_VARIANT.envs.$SETTINGS
echo "Loading settings $DJANGO_SETTINGS_MODULE"

./manage.py cms migrate

# Fix incorrect uploaded file path
if [ -d /openedx/data/uploads/ ]; then
  if [ -n "$(ls -A /openedx/data/uploads/)" ]; then
    echo "Migrating CMS uploaded files to shared directory"
    mv /openedx/data/uploads/* /openedx/media/
    rm -rf /openedx/data/uploads/
  fi
fi
2020/05/13 09:08:38 Waiting for: tcp://mysql:3306
2020/05/13 09:08:38 Connected to tcp://mysql:3306
Loading settings cms.envs.tutor.production
WARNING:py.warnings:/openedx/edx-platform/lms/djangoapps/courseware/__init__.py:5: DeprecationWarning: Importing 'lms.djangoapps.courseware' as 'courseware' is no longer supported
  warnings.warn("Importing 'lms.djangoapps.courseware' as 'courseware' is no longer supported", DeprecationWarning)

2020-05-13 09:08:44,271 WARNING 13 [enterprise.utils] utils.py:50 - Could not import Registry from third_party_auth.provider
2020-05-13 09:08:44,272 WARNING 13 [enterprise.utils] utils.py:51 - cannot import name EnterpriseCustomerUser
Operations to perform:
  Apply all migrations: admin, api_admin, assessment, auth, block_structure, bookmarks, catalog, celery_utils, completion, consent, content_type_gating, contentserver, contentstore, contenttypes, course_action_state, course_creators, course_duration_limits, course_groups, course_modes, course_overviews, courseware, crawlers, credit, dark_lang, database_fixups, degreed, django_comment_common, django_notify, django_openid_auth, djcelery, edx_oauth2_provider, edx_proctoring, edxval, embargo, enterprise, entitlements, experiments, external_auth, integrated_channel, microsite_configuration, milestones, oauth2, oauth2_provider, oauth_dispatch, oauth_provider, organizations, redirects, sap_success_factors, schedules, self_paced, sessions, site_configuration, sites, static_replace, student, submissions, survey, tagging, theming, track, user_api, user_authn, user_tasks, verified_track_content, verify_student, video_config, video_pipeline, waffle, waffle_utils, wiki, workflow, xapi, xblock_config, xblock_django
Running migrations:
  No migrations to apply.
Initialising forum...
docker-compose -f /home/raifox/.local/share/tutor/env/local/docker-compose.yml --project-name tutor_local -f /home/raifox/.local/share/tutor/env/local/docker-compose.jobs.yml run --rm forum-job sh -e -c export MONGOHQ_URL="mongodb://$MONGODB_AUTH$MONGODB_HOST:$MONGODB_PORT/cs_comments_service"

bundle exec rake search:initialize
bundle exec rake search:rebuild_index
Waiting for mongodb/elasticsearch...
2020/05/13 09:09:11 Waiting for: tcp://mongodb:27017
2020/05/13 09:09:11 Waiting for: http://elasticsearch:9200
2020/05/13 09:09:11 Connected to tcp://mongodb:27017
2020/05/13 09:09:11 Received 200 from http://elasticsearch:9200
/openedx/cs_comments_service/lib/tasks/deep_search.rake:7: warning: already initialized constant ROOT
/openedx/cs_comments_service/lib/tasks/kpis.rake:7: warning: previous definition of ROOT was here
/openedx/cs_comments_service/lib/tasks/flags.rake:6: warning: already initialized constant ROOT
/openedx/cs_comments_service/lib/tasks/deep_search.rake:7: warning: previous definition of ROOT was here
/openedx/cs_comments_service/vendor/bundle/ruby/2.4.0/gems/elasticsearch-transport-1.1.2/lib/elasticsearch/transport/transport/base.rb:52: warning: constant ::Fixnum is deprecated
/openedx/cs_comments_service/vendor/bundle/ruby/2.4.0/gems/elasticsearch-transport-1.1.2/lib/elasticsearch/transport/transport/base.rb:54: warning: constant ::Fixnum is deprecated
/openedx/cs_comments_service/models/constants.rb:2: warning: already initialized constant COURSE_ID
/openedx/cs_comments_service/lib/tasks/db.rake:28: warning: previous definition of COURSE_ID was here
W, [2020-05-13T09:09:16.571515 #17]  WARN -- : Overwriting existing field _id in class User.
W, [2020-05-13T09:09:16.635434 #17]  WARN -- : MONGODB | Unsupported client option 'max_retries'. It will be ignored.
W, [2020-05-13T09:09:16.635510 #17]  WARN -- : MONGODB | Unsupported client option 'retry_interval'. It will be ignored.
W, [2020-05-13T09:09:16.635564 #17]  WARN -- : MONGODB | Unsupported client option 'timeout'. It will be ignored.
I, [2020-05-13T09:09:16.720180 #17]  INFO -- : Skipping initialization. The 'content' alias already exists. If 'rake search:validate_index' indicates a problem with the mappings, you could either use 'rake search:rebuild_index' to reload from the db or 'rake search:initialize[true]' to force initialization with an empty index.
/openedx/cs_comments_service/lib/tasks/deep_search.rake:7: warning: already initialized constant ROOT
/openedx/cs_comments_service/lib/tasks/kpis.rake:7: warning: previous definition of ROOT was here
/openedx/cs_comments_service/lib/tasks/flags.rake:6: warning: already initialized constant ROOT
/openedx/cs_comments_service/lib/tasks/deep_search.rake:7: warning: previous definition of ROOT was here
/openedx/cs_comments_service/vendor/bundle/ruby/2.4.0/gems/elasticsearch-transport-1.1.2/lib/elasticsearch/transport/transport/base.rb:52: warning: constant ::Fixnum is deprecated
/openedx/cs_comments_service/vendor/bundle/ruby/2.4.0/gems/elasticsearch-transport-1.1.2/lib/elasticsearch/transport/transport/base.rb:54: warning: constant ::Fixnum is deprecated
/openedx/cs_comments_service/models/constants.rb:2: warning: already initialized constant COURSE_ID
/openedx/cs_comments_service/lib/tasks/db.rake:28: warning: previous definition of COURSE_ID was here
W, [2020-05-13T09:09:19.156808 #25]  WARN -- : Overwriting existing field _id in class User.
W, [2020-05-13T09:09:19.189485 #25]  WARN -- : MONGODB | Unsupported client option 'max_retries'. It will be ignored.
W, [2020-05-13T09:09:19.189552 #25]  WARN -- : MONGODB | Unsupported client option 'retry_interval'. It will be ignored.
W, [2020-05-13T09:09:19.189596 #25]  WARN -- : MONGODB | Unsupported client option 'timeout'. It will be ignored.
I, [2020-05-13T09:09:22.121334 #25]  INFO -- : Added mappings to index: content_20200513090919193.
I, [2020-05-13T09:09:22.124218 #25]  INFO -- : Created new index: content_20200513090919193.
I, [2020-05-13T09:09:22.430248 #25]  INFO -- : Imported batch 1 into the index
I, [2020-05-13T09:09:22.447078 #25]  INFO -- : Catch up from 2020-05-13 09:04:19 UTC complete.
I, [2020-05-13T09:09:23.809566 #25]  INFO -- : Alias [content] now points to index [content_20200513090919193].
I, [2020-05-13T09:09:23.823208 #25]  INFO -- : Catch up from 2020-05-13 09:04:22 UTC complete.
I, [2020-05-13T09:09:23.823317 #25]  INFO -- : Rebuild index complete.
Plugin discovery: running init for service mysql...
docker-compose -f /home/raifox/.local/share/tutor/env/local/docker-compose.yml --project-name tutor_local -f /home/raifox/.local/share/tutor/env/local/docker-compose.jobs.yml run --rm mysql-job sh -e -c mysql -u root --password="ND2BpSBD" --host "mysql" --port 3306 -e 'CREATE DATABASE IF NOT EXISTS discovery;'
mysql -u root --password="ND2BpSBD" --host "mysql" --port 3306 -e 'GRANT ALL ON discovery.* TO "discovery"@"%" IDENTIFIED BY "DoLt26E4";'
Warning: Using a password on the command line interface can be insecure.
Warning: Using a password on the command line interface can be insecure.
Plugin discovery: running init for service lms...
docker-compose -f /home/raifox/.local/share/tutor/env/local/docker-compose.yml --project-name tutor_local -f /home/raifox/.local/share/tutor/env/local/docker-compose.jobs.yml run --rm lms-job sh -e -c export DJANGO_SETTINGS_MODULE=$SERVICE_VARIANT.envs.$SETTINGS

./manage.py lms manage_user discovery discovery@localhost --staff --superuser
./manage.py lms manage_user lms_catalog_service_user lms_catalog_service_user@localhost

# Development client
./manage.py lms create_oauth2_client \
    "http://localhost:8381" \
    "http://localhost:8381/complete/edx-oidc/" \
    confidential \
    --client_name discovery-dev \
    --client_id discovery-dev \
    --client_secret ik9f7eEM \
    --username discovery \
    --trusted

# Production client
./manage.py lms create_oauth2_client \
    "http://discovery.localhost" \
    "http://discovery.localhost/complete/edx-oidc/" \
    confidential \
    --client_name discovery \
    --client_id discovery \
    --client_secret ik9f7eEM \
    --username discovery \
    --trusted
WARNING:py.warnings:/openedx/edx-platform/lms/djangoapps/courseware/__init__.py:5: DeprecationWarning: Importing 'lms.djangoapps.courseware' as 'courseware' is no longer supported
  warnings.warn("Importing 'lms.djangoapps.courseware' as 'courseware' is no longer supported", DeprecationWarning)

2020-05-13 09:09:56,206 WARNING 6 [enterprise.utils] utils.py:50 - Could not import Registry from third_party_auth.provider
2020-05-13 09:09:56,208 WARNING 6 [enterprise.utils] utils.py:51 - cannot import name _LTI_BACKENDS
Created new user: "discovery"
Setting is_staff for user "discovery" to "True"
Setting is_superuser for user "discovery" to "True"
Created new profile for user: "discovery"
Adding user "discovery" to groups []
Removing user "discovery" from groups []
2020-05-13 09:09:59,390 INFO 6 [tracking] logger.py:42 - {"username": "", "event_source": "server", "name": "edx.user.settings.changed", "accept_language": "", "time": "2020-05-13T09:09:59.390688+00:00", "agent": "", "page": null, "host": "", "session": "", "referer": "", "context": {}, "ip": "", "event": {"user_id": 9, "truncated": [], "old": false, "setting": "is_superuser", "table": "auth_user", "new": true}, "event_type": "edx.user.settings.changed"}
2020-05-13 09:09:59,391 INFO 6 [tracking] logger.py:42 - {"username": "", "event_source": "server", "name": "edx.user.settings.changed", "accept_language": "", "time": "2020-05-13T09:09:59.391206+00:00", "agent": "", "page": null, "host": "", "session": "", "referer": "", "context": {}, "ip": "", "event": {"user_id": 9, "truncated": [], "old": null, "setting": "password", "table": "auth_user", "new": null}, "event_type": "edx.user.settings.changed"}
2020-05-13 09:09:59,391 INFO 6 [tracking] logger.py:42 - {"username": "", "event_source": "server", "name": "edx.user.settings.changed", "accept_language": "", "time": "2020-05-13T09:09:59.391551+00:00", "agent": "", "page": null, "host": "", "session": "", "referer": "", "context": {}, "ip": "", "event": {"user_id": 9, "truncated": [], "old": false, "setting": "is_staff", "table": "auth_user", "new": true}, "event_type": "edx.user.settings.changed"}
WARNING:py.warnings:/openedx/edx-platform/lms/djangoapps/courseware/__init__.py:5: DeprecationWarning: Importing 'lms.djangoapps.courseware' as 'courseware' is no longer supported
  warnings.warn("Importing 'lms.djangoapps.courseware' as 'courseware' is no longer supported", DeprecationWarning)

2020-05-13 09:10:05,624 WARNING 120 [enterprise.utils] utils.py:50 - Could not import Registry from third_party_auth.provider
2020-05-13 09:10:05,624 WARNING 120 [enterprise.utils] utils.py:51 - cannot import name _LTI_BACKENDS
Found existing user: "lms_catalog_service_user"
Adding user "lms_catalog_service_user" to groups []
Removing user "lms_catalog_service_user" from groups []
WARNING:py.warnings:/openedx/edx-platform/lms/djangoapps/courseware/__init__.py:5: DeprecationWarning: Importing 'lms.djangoapps.courseware' as 'courseware' is no longer supported
  warnings.warn("Importing 'lms.djangoapps.courseware' as 'courseware' is no longer supported", DeprecationWarning)

2020-05-13 09:10:16,261 WARNING 234 [enterprise.utils] utils.py:50 - Could not import Registry from third_party_auth.provider
2020-05-13 09:10:16,261 WARNING 234 [enterprise.utils] utils.py:51 - cannot import name _LTI_BACKENDS
{
    "name": "discovery-dev", 
    "url": "http://localhost:8381", 
    "logout_uri": null, 
    "redirect_uri": "http://localhost:8381/complete/edx-oidc/", 
    "client_id": "discovery-dev", 
    "user": {
        "username": "discovery", 
        "first_name": "", 
        "last_name": "", 
        "is_active": true, 
        "email": "discovery@localhost", 
        "is_superuser": true, 
        "is_staff": true, 
        "last_login": null, 
        "password": "pbkdf2_sha256$36000$NsSzWMX8qyoI$v16fdukM+OUYqGfrdjRXmFWuC5Lo8l1huhYWA87Boo4=", 
        "id": 9, 
        "date_joined": "2020-05-13T09:09:59.126Z"
    }, 
    "client_type": 0, 
    "client_secret": "ik9f7eEM"
}
WARNING:py.warnings:/openedx/edx-platform/lms/djangoapps/courseware/__init__.py:5: DeprecationWarning: Importing 'lms.djangoapps.courseware' as 'courseware' is no longer supported
  warnings.warn("Importing 'lms.djangoapps.courseware' as 'courseware' is no longer supported", DeprecationWarning)

2020-05-13 09:10:25,404 WARNING 348 [enterprise.utils] utils.py:50 - Could not import Registry from third_party_auth.provider
2020-05-13 09:10:25,404 WARNING 348 [enterprise.utils] utils.py:51 - cannot import name _LTI_BACKENDS
{
    "name": "discovery", 
    "url": "http://discovery.localhost", 
    "logout_uri": null, 
    "redirect_uri": "http://discovery.localhost/complete/edx-oidc/", 
    "client_id": "discovery", 
    "user": {
        "username": "discovery", 
        "first_name": "", 
        "last_name": "", 
        "is_active": true, 
        "email": "discovery@localhost", 
        "is_superuser": true, 
        "is_staff": true, 
        "last_login": null, 
        "password": "pbkdf2_sha256$36000$NsSzWMX8qyoI$v16fdukM+OUYqGfrdjRXmFWuC5Lo8l1huhYWA87Boo4=", 
        "id": 9, 
        "date_joined": "2020-05-13T09:09:59.126Z"
    }, 
    "client_type": 0, 
    "client_secret": "ik9f7eEM"
}
Plugin discovery: running init for service discovery...
⚠️  The 'discovery-job' service does not exist in /home/raifox/.local/share/tutor/env/local/docker-compose.jobs.yml. This might be caused by an older plugin. Tutor switched to a job runner model for running one-time commands, such as database initialisation. For the record, this is the command that we are running:

    export DJANGO_SETTINGS_MODULE=course_discovery.settings.tutor.production

    make migrate

    # Creating partners: the courses-api-url and oidc-url-root need to be accessible
    # from inside the discovery container in order to successfully run init.
    # TODO add --ecommerce-api-url parameters
    # Development partners
    ./manage.py create_or_update_partner  \
      --site-id 1 \
      --site-domain discovery.localhost \
      --code dev --name "Open edX - development" \
      --courses-api-url "http://lms:8000/api/courses/v1/" \
      --oidc-url-root "http://lms:8000/oauth2" \
      --oidc-key "discovery" \
      --oidc-secret "ik9f7eEM"

    ./manage.py create_or_update_partner  \
      --site-id 3 \
      --site-domain localhost \
      --code dev8381 --name "Open edX - development (localhost:8381)" \
      --courses-api-url "http://lms:8000/api/courses/v1/" \
      --oidc-url-root "http://lms:8000/oauth2" \
      --oidc-key "discovery-dev" \
      --oidc-secret "ik9f7eEM"

    # Production partner
    ./manage.py create_or_update_partner  \
      --site-id 2 \
      --site-domain discovery.localhost \
      --code openedx --name "Open edX" \
      --courses-api-url "http://localhost/api/courses/v1/" \
      --oidc-url-root "http://localhost/oauth2" \
      --oidc-key "discovery" \
      --oidc-secret "ik9f7eEM"

    ./manage.py refresh_course_metadata --partner_code=dev
    ./manage.py update_index --disable-change-limit

Old-style job running will be deprecated soon. Please inform your plugin maintainer!
docker-compose -f /home/raifox/.local/share/tutor/env/local/docker-compose.yml --project-name tutor_local run --rm discovery sh -e -c export DJANGO_SETTINGS_MODULE=course_discovery.settings.tutor.production

make migrate

# Creating partners: the courses-api-url and oidc-url-root need to be accessible
# from inside the discovery container in order to successfully run init.
# TODO add --ecommerce-api-url parameters
# Development partners
./manage.py create_or_update_partner  \
  --site-id 1 \
  --site-domain discovery.localhost \
  --code dev --name "Open edX - development" \
  --courses-api-url "http://lms:8000/api/courses/v1/" \
  --oidc-url-root "http://lms:8000/oauth2" \
  --oidc-key "discovery" \
  --oidc-secret "ik9f7eEM"

./manage.py create_or_update_partner  \
  --site-id 3 \
  --site-domain localhost \
  --code dev8381 --name "Open edX - development (localhost:8381)" \
  --courses-api-url "http://lms:8000/api/courses/v1/" \
  --oidc-url-root "http://lms:8000/oauth2" \
  --oidc-key "discovery-dev" \
  --oidc-secret "ik9f7eEM"

# Production partner
./manage.py create_or_update_partner  \
  --site-id 2 \
  --site-domain discovery.localhost \
  --code openedx --name "Open edX" \
  --courses-api-url "http://localhost/api/courses/v1/" \
  --oidc-url-root "http://localhost/oauth2" \
  --oidc-key "discovery" \
  --oidc-secret "ik9f7eEM"

./manage.py refresh_course_metadata --partner_code=dev
Starting tutor_local_mysql_1         ... done
Starting tutor_local_memcached_1 ... one
Starting tutor_local_memcached_1     ... done
Starting tutor_local_mongodb_1       ... done
Starting tutor_local_smtp_1          ... done
Starting tutor_local_elasticsearch_1 ... done
Starting tutor_local_forum_1         ... done
Starting tutor_local_lms_1           ... done
python manage.py migrate --noinput
Operations to perform:
  Apply all migrations: admin, auth, catalogs, contenttypes, core, course_metadata, django_comments, guardian, ietf_language_tags, journal, publisher, publisher_comments, sessions, sites, social_django, taggit, waffle
Running migrations:
  No migrations to apply.
python manage.py install_es_indexes
2020-05-13 09:10:55,702 INFO 12 [course_discovery.apps.core.management.commands.install_es_indexes] /openedx/discovery/course_discovery/apps/core/management/commands/install_es_indexes.py:19 - Attempting to establish initial connection to Elasticsearch host [http://elasticsearch:9200]...
2020-05-13 09:10:55,704 INFO 12 [course_discovery.apps.core.management.commands.install_es_indexes] /openedx/discovery/course_discovery/apps/core/management/commands/install_es_indexes.py:21 - ...success!
2020-05-13 09:10:55,704 INFO 12 [course_discovery.apps.core.utils] /openedx/discovery/course_discovery/apps/core/utils.py:18 - Making sure alias [catalog] exists...
2020-05-13 09:10:55,873 INFO 12 [course_discovery.apps.core.utils] /openedx/discovery/course_discovery/apps/core/utils.py:22 - ...alias exists.
2020-05-13 09:10:58,415 INFO 17 [course_discovery.apps.core.management.commands.create_or_update_partner] /openedx/discovery/course_discovery/apps/core/management/commands/create_or_update_partner.py:141 - Partner updated with code dev
2020-05-13 09:11:03,288 INFO 22 [course_discovery.apps.core.management.commands.create_or_update_partner] /openedx/discovery/course_discovery/apps/core/management/commands/create_or_update_partner.py:141 - Partner updated with code dev8381
Traceback (most recent call last):
  File "/openedx/venv/lib/python3.5/site-packages/django/db/models/query.py", line 480, in update_or_create
    obj = self.select_for_update().get(**lookup)
  File "/openedx/venv/lib/python3.5/site-packages/django/db/models/query.py", line 380, in get
    self.model._meta.object_name
django.contrib.sites.models.DoesNotExist: Site matching query does not exist.

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "/openedx/venv/lib/python3.5/site-packages/django/db/backends/utils.py", line 64, in execute
    return self.cursor.execute(sql, params)
  File "/openedx/venv/lib/python3.5/site-packages/django/db/backends/mysql/base.py", line 101, in execute
    return self.cursor.execute(query, args)
  File "/openedx/venv/lib/python3.5/site-packages/MySQLdb/cursors.py", line 250, in execute
    self.errorhandler(self, exc, value)
  File "/openedx/venv/lib/python3.5/site-packages/MySQLdb/connections.py", line 42, in defaulterrorhandler
    raise errorvalue
  File "/openedx/venv/lib/python3.5/site-packages/MySQLdb/cursors.py", line 247, in execute
    res = self._query(query)
  File "/openedx/venv/lib/python3.5/site-packages/MySQLdb/cursors.py", line 411, in _query
    rowcount = self._do_query(q)
  File "/openedx/venv/lib/python3.5/site-packages/MySQLdb/cursors.py", line 374, in _do_query
    db.query(q)
  File "/openedx/venv/lib/python3.5/site-packages/MySQLdb/connections.py", line 270, in query
    _mysql.connection.query(self, query)
_mysql_exceptions.IntegrityError: (1062, "Duplicate entry 'discovery.localhost' for key 'django_site_domain_a2e37b91_uniq'")

The above exception was the direct cause of the following exception:

Traceback (most recent call last):
  File "./manage.py", line 15, in <module>
    execute_from_command_line(sys.argv)
  File "/openedx/venv/lib/python3.5/site-packages/django/core/management/__init__.py", line 364, in execute_from_command_line
    utility.execute()
  File "/openedx/venv/lib/python3.5/site-packages/django/core/management/__init__.py", line 356, in execute
    self.fetch_command(subcommand).run_from_argv(self.argv)
  File "/openedx/venv/lib/python3.5/site-packages/django/core/management/base.py", line 283, in run_from_argv
    self.execute(*args, **cmd_options)
  File "/openedx/venv/lib/python3.5/site-packages/django/core/management/base.py", line 330, in execute
    output = self.handle(*args, **options)
  File "/openedx/discovery/course_discovery/apps/core/management/commands/create_or_update_partner.py", line 121, in handle
    site, __ = Site.objects.update_or_create(defaults=defaults, **lookup)
  File "/openedx/venv/lib/python3.5/site-packages/django/db/models/manager.py", line 85, in manager_method
    return getattr(self.get_queryset(), name)(*args, **kwargs)
  File "/openedx/venv/lib/python3.5/site-packages/django/db/models/query.py", line 482, in update_or_create
    obj, created = self._create_object_from_params(lookup, params)
  File "/openedx/venv/lib/python3.5/site-packages/django/db/models/query.py", line 506, in _create_object_from_params
    six.reraise(*exc_info)
  File "/openedx/venv/lib/python3.5/site-packages/django/utils/six.py", line 686, in reraise
    raise value
  File "/openedx/venv/lib/python3.5/site-packages/django/db/models/query.py", line 498, in _create_object_from_params
    obj = self.create(**params)
  File "/openedx/venv/lib/python3.5/site-packages/django/db/models/query.py", line 394, in create
    obj.save(force_insert=True, using=self.db)
  File "/openedx/venv/lib/python3.5/site-packages/django/db/models/base.py", line 808, in save
    force_update=force_update, update_fields=update_fields)
  File "/openedx/venv/lib/python3.5/site-packages/django/db/models/base.py", line 838, in save_base
    updated = self._save_table(raw, cls, force_insert, force_update, using, update_fields)
  File "/openedx/venv/lib/python3.5/site-packages/django/db/models/base.py", line 924, in _save_table
    result = self._do_insert(cls._base_manager, using, fields, update_pk, raw)
  File "/openedx/venv/lib/python3.5/site-packages/django/db/models/base.py", line 963, in _do_insert
    using=using, raw=raw)
  File "/openedx/venv/lib/python3.5/site-packages/django/db/models/manager.py", line 85, in manager_method
    return getattr(self.get_queryset(), name)(*args, **kwargs)
  File "/openedx/venv/lib/python3.5/site-packages/django/db/models/query.py", line 1076, in _insert
    return query.get_compiler(using=using).execute_sql(return_id)
  File "/openedx/venv/lib/python3.5/site-packages/django/db/models/sql/compiler.py", line 1112, in execute_sql
    cursor.execute(sql, params)
  File "/openedx/venv/lib/python3.5/site-packages/django/db/backends/utils.py", line 64, in execute
    return self.cursor.execute(sql, params)
  File "/openedx/venv/lib/python3.5/site-packages/django/db/utils.py", line 94, in __exit__
    six.reraise(dj_exc_type, dj_exc_value, traceback)
  File "/openedx/venv/lib/python3.5/site-packages/django/utils/six.py", line 685, in reraise
    raise value.with_traceback(tb)
  File "/openedx/venv/lib/python3.5/site-packages/django/db/backends/utils.py", line 64, in execute
    return self.cursor.execute(sql, params)
  File "/openedx/venv/lib/python3.5/site-packages/django/db/backends/mysql/base.py", line 101, in execute
    return self.cursor.execute(query, args)
  File "/openedx/venv/lib/python3.5/site-packages/MySQLdb/cursors.py", line 250, in execute
    self.errorhandler(self, exc, value)
  File "/openedx/venv/lib/python3.5/site-packages/MySQLdb/connections.py", line 42, in defaulterrorhandler
    raise errorvalue
  File "/openedx/venv/lib/python3.5/site-packages/MySQLdb/cursors.py", line 247, in execute
    res = self._query(query)
  File "/openedx/venv/lib/python3.5/site-packages/MySQLdb/cursors.py", line 411, in _query
    rowcount = self._do_query(q)
  File "/openedx/venv/lib/python3.5/site-packages/MySQLdb/cursors.py", line 374, in _do_query
    db.query(q)
  File "/openedx/venv/lib/python3.5/site-packages/MySQLdb/connections.py", line 270, in query
    _mysql.connection.query(self, query)
django.db.utils.IntegrityError: (1062, "Duplicate entry 'discovery.localhost' for key 'django_site_domain_a2e37b91_uniq'")
Error: Command failed with status 1: docker-compose -f /home/raifox/.local/share/tutor/env/local/docker-compose.yml --project-name tutor_local run --rm discovery sh -e -c export DJANGO_SETTINGS_MODULE=course_discovery.settings.tutor.production

make migrate

# Creating partners: the courses-api-url and oidc-url-root need to be accessible
# from inside the discovery container in order to successfully run init.
# TODO add --ecommerce-api-url parameters
# Development partners
./manage.py create_or_update_partner  \
  --site-id 1 \
  --site-domain discovery.localhost \
  --code dev --name "Open edX - development" \
  --courses-api-url "http://lms:8000/api/courses/v1/" \
  --oidc-url-root "http://lms:8000/oauth2" \
  --oidc-key "discovery" \
  --oidc-secret "ik9f7eEM"

./manage.py create_or_update_partner  \
  --site-id 3 \
  --site-domain localhost \
  --code dev8381 --name "Open edX - development (localhost:8381)" \
  --courses-api-url "http://lms:8000/api/courses/v1/" \
  --oidc-url-root "http://lms:8000/oauth2" \
  --oidc-key "discovery-dev" \
  --oidc-secret "ik9f7eEM"

# Production partner
./manage.py create_or_update_partner  \
  --site-id 2 \
  --site-domain discovery.localhost \
  --code openedx --name "Open edX" \
  --courses-api-url "http://localhost/api/courses/v1/" \
  --oidc-url-root "http://localhost/oauth2" \
  --oidc-key "discovery" \
  --oidc-secret "ik9f7eEM"

./manage.py refresh_course_metadata --partner_code=dev
./manage.py update_index --disable-change-limit
regisb commented 4 years ago

This is due to the fact that you are using "localhost" for the LMS host.You shouldn't, but then this issue has been raised by a few people already: https://discuss.overhang.io/t/local-deployment-issue/436 https://discuss.overhang.io/t/error-on-discovery-enable/509

So I guess I'd better address this. This will be fixed by v0.1.17 which will be released in a few minutes. I'm closing this now.

shashikiranraifox commented 4 years ago

@regisb , Thanks for the quick response. My plugin version is 0.1.15(used tutor plugins list command). Id there a way to tell the tutor plugins enable command to use version 0.1.17 ?

regisb commented 4 years ago

@shashikiranraifox It depends how to installed tutor. If you downloaded the tutor binary, then you will have to wait for the next release of Tutor. If you installed from source (pip install ...) then you can simply download the latest version of the plugin with pip (pip install --upgrade tutor-ecommerce).

The obvious alternative is to not set "localhost" as the lms host...

shashikiranraifox commented 4 years ago

@shashikiranraifox It depends how to installed tutor. If you downloaded the tutor binary, then you will have to wait for the next release of Tutor. If you installed from source (pip install ...) then you can simply download the latest version of the plugin with pip (pip install --upgrade tutor-ecommerce).

The obvious alternative is to not set "localhost" as the lms host...

Noted. Thanks