Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[change] Move python dependencies to requirements.txt file #511

Open
wants to merge 14 commits into
base: master
Choose a base branch
from
Open
Show file tree
Hide file tree
Changes from 4 commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
18 changes: 12 additions & 6 deletions .github/dependabot.yml
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I don't think we need any changes for this file.

Copy link
Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

fixed dependabot as it was previously in my latest commit

Original file line number Diff line number Diff line change
@@ -1,14 +1,20 @@
version: 2
updates:
- package-ecosystem: "pip" # Check for Python package updates
directory: "/" # The root directory where the Ansible role is located
- package-ecosystem: "pip"
directory: "/"
schedule:
interval: "monthly" # Check for updates weekly
interval: "weekly"
open-pull-requests-limit: 10
labels:
- "dependencies"
- "python"
commit-message:
prefix: "[deps] "
- package-ecosystem: "github-actions" # Check for GitHub Actions updates
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Why are you removing github-actions? Please don't.

Copy link
Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I've made the fix for this in my recent commit

directory: "/" # The root directory where the Ansible role is located
include: "scope"

- package-ecosystem: "github-actions"
directory: "/"
schedule:
interval: "monthly" # Check for updates weekly
interval: "weekly"
commit-message:
prefix: "[ci] "
27 changes: 27 additions & 0 deletions files/requirements.txt
Original file line number Diff line number Diff line change
@@ -0,0 +1,27 @@
# Core Django and related packages
django-redis~=5.4.0
django-pipeline~=3.1.0
channels_redis~=4.2.0
django-cors-headers~=4.4.0

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Remove this extra blank line

# WSGI server
uwsgi

# Optional dependencies
service_identity
attrs

# Database adapters
psycopg2
MySQL-python

# Integration dependencies
raven # For Sentry integration
django-celery-email # For Celery email backend

# OpenWISP packages
openwisp-controller
openwisp-network-topology # Optional
openwisp-firmware-upgrader # Optional
openwisp-monitoring # Optional
openwisp-radius # Optional
228 changes: 15 additions & 213 deletions tasks/pip.yml
Original file line number Diff line number Diff line change
Expand Up @@ -6,243 +6,45 @@
- pip
- setuptools
- wheel
- attrs
state: latest
virtualenv: "{{ virtualenv_path }}"
virtualenv_python: "{{ openwisp2_python }}"
retries: 5
delay: 10
register: result
until: result is success

- name: Remove jsonfield2
pip:
name:
- jsonfield2
state: absent
virtualenv: "{{ virtualenv_path }}"
virtualenv_python: "{{ openwisp2_python }}"
retries: 2
retries: 3
delay: 5
register: result
until: result is success
notify: Reload application

- name: Install openwisp2 controller and its dependencies
- name: Install Python dependencies from requirements.txt
pip:
name:
- "{{ openwisp2_controller_version }}"
- service_identity
state: latest
requirements: "{{ role_path }}/files/requirements.txt"
state: present
virtualenv: "{{ virtualenv_path }}"
virtualenv_python: "{{ openwisp2_python }}"
extra_args: >-
{% if openwisp2_controller_version is defined %}--constraint <(echo "openwisp-controller=={{ openwisp2_controller_version }}"){% endif %}
{% if openwisp2_network_topology_version is defined %}--constraint <(echo "openwisp-network-topology=={{ openwisp2_network_topology_version }}"){% endif %}
{% if openwisp2_firmware_upgrader_version is defined %}--constraint <(echo "openwisp-firmware-upgrader=={{ openwisp2_firmware_upgrader_version }}"){% endif %}
{% if openwisp2_monitoring_version is defined %}--constraint <(echo "openwisp-monitoring=={{ openwisp2_monitoring_version }}"){% endif %}
{% if openwisp2_radius_version is defined %}--constraint <(echo "openwisp-radius=={{ openwisp2_radius_version }}"){% endif %}
{% if openwisp2_django_version is defined %}--constraint <(echo "django=={{ openwisp2_django_version }}"){% endif %}
environment:
LC_CTYPE: "en_US.UTF-8"
notify: Reload application
retries: 5
delay: 10
register: result
until: result is success
tags:
- molecule-idempotence-notest

- name: Install channels_redis~=4.2.0
pip:
name:
- channels_redis~=4.2.0
state: latest
virtualenv: "{{ virtualenv_path }}"
virtualenv_python: "{{ openwisp2_python }}"
retries: 1
delay: 10
register: result
until: result is success

- name: Install django-redis
pip:
name: "django-redis~=5.4.0"
state: present
virtualenv: "{{ virtualenv_path }}"
virtualenv_python: "{{ openwisp2_python }}"
notify: Reload application
retries: 5
delay: 10
register: result
until: result is success

- name: Install openwisp2 network topology and its dependencies
when: openwisp2_network_topology
pip:
name: "{{ openwisp2_network_topology_version }}"
state: latest
virtualenv: "{{ virtualenv_path }}"
virtualenv_python: "{{ openwisp2_python }}"
notify: Reload application
retries: 5
delay: 10
register: result
until: result is success
tags:
- molecule-idempotence-notest

- name: Install openwisp firmware upgrader and its dependencies
when: openwisp2_firmware_upgrader
pip:
name: "{{ openwisp2_firmware_upgrader_version }}"
state: latest
virtualenv: "{{ virtualenv_path }}"
virtualenv_python: "{{ openwisp2_python }}"
notify: Reload application
retries: 5
delay: 10
register: result
until: result is success
tags:
- molecule-idempotence-notest

- name: Install openwisp monitoring and its dependencies
when: openwisp2_monitoring
pip:
name: "{{ openwisp2_monitoring_version }}"
state: latest
virtualenv: "{{ virtualenv_path }}"
virtualenv_python: "{{ openwisp2_python }}"
notify: Reload application
retries: 5
delay: 10
register: result
until: result is success
tags:
- molecule-idempotence-notest

- name: Install openwisp2_radius and its dependencies
when: openwisp2_radius
pip:
name: "{{ openwisp2_radius_version }}"
state: latest
virtualenv: "{{ virtualenv_path }}"
virtualenv_python: "{{ openwisp2_python }}"
notify: Reload application
retries: 5
delay: 10
register: result
until: result is success
tags:
- molecule-idempotence-notest

- name: Install django-cors-headers
when: openwisp2_django_cors.get('enabled')
pip:
name: "django-cors-headers~=4.4.0"
state: latest
virtualenv: "{{ virtualenv_path }}"
virtualenv_python: "{{ openwisp2_python }}"
retries: 5
delay: 10
register: result
until: result is success
notify: Reload application

- name: Install extra python packages
pip:
name: "{{ openwisp2_extra_python_packages }}"
state: latest
virtualenv: "{{ virtualenv_path }}"
virtualenv_python: "{{ openwisp2_python }}"
retries: 5
delay: 10
register: result
until: result is success
notify: Reload application
tags: [extra_pip]

- name: Install static minification dependencies
pip:
name:
- django-pipeline~=3.1.0
state: latest
virtualenv: "{{ virtualenv_path }}"
virtualenv_python: "{{ openwisp2_python }}"
retries: 5
delay: 10
register: result
until: result is success
notify: Reload application

- name: Install uwsgi
pip:
name: uwsgi
state: latest
virtualenv: "{{ virtualenv_path }}"
virtualenv_python: "{{ openwisp2_python }}"
retries: 5
delay: 10
register: result
until: result is success
notify: Reload application

- name: Install psycopg2
when: openwisp2_database.engine in ["django.db.backends.postgresql", "django.contrib.gis.db.backends.postgis"]
pip:
name: psycopg2
state: latest
virtualenv: "{{ virtualenv_path }}"
virtualenv_python: "{{ openwisp2_python }}"
retries: 5
delay: 10
register: result
until: result is success
notify: Reload application

- name: Install MySQL-python
when: openwisp2_database.engine in ["django.db.backends.mysql", "django.contrib.gis.db.backends.mysql"]
pip:
name: MySQL-python
state: latest
virtualenv: "{{ virtualenv_path }}"
virtualenv_python: "{{ openwisp2_python }}"
retries: 5
delay: 10
register: result
until: result is success
notify: Reload application

- name: Install raven (sentry client)
when: openwisp2_sentry.get('dsn')
pip:
name: raven
state: latest
virtualenv: "{{ virtualenv_path }}"
virtualenv_python: "{{ openwisp2_python }}"
retries: 5
delay: 10
register: result
until: result is success
notify: Reload application

- name: Install django-celery-email
pip:
name: django-celery-email
state: latest
virtualenv: "{{ virtualenv_path }}"
virtualenv_python: "{{ openwisp2_python }}"
when: openwisp2_email_backend == "djcelery_email.backends.CeleryEmailBackend"
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

As I suggested in the previous review, don't add packages to requirements.txt which are installed conditionally.

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

we could install it anyway, it shouldn't be a big deal, what do you think?

retries: 5
delay: 10
register: result
until: result is success
notify: Reload application

- name: Install django
pip:
name: "{{ openwisp2_django_version }}"
state: present
virtualenv: "{{ virtualenv_path }}"
virtualenv_python: "{{ openwisp2_python }}"
retries: 5
delay: 10
when: openwisp2_extra_python_packages | length > 0
retries: 3
delay: 5
register: result
until: result is success
notify: Reload application
tags:
- molecule-idempotence-notest
tags: [extra_pip]
Loading