Show More
@@ -0,0 +1,21 b'' | |||||
|
1 | # Changelog | |||
|
2 | ||||
|
3 | The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/). | |||
|
4 | ||||
|
5 | <!-- | |||
|
6 | PRs should document their user-visible changes (if any) in the | |||
|
7 | Unreleased section, uncommenting the header as necessary. | |||
|
8 | --> | |||
|
9 | ||||
|
10 | <!-- ## Unreleased --> | |||
|
11 | <!-- ### Changed --> | |||
|
12 | <!-- ### Added --> | |||
|
13 | <!-- ### Removed --> | |||
|
14 | <!-- ### Fixed --> | |||
|
15 | ||||
|
16 | ||||
|
17 | ## [1.2.0 - 2019-03-17] | |||
|
18 | ### Changed | |||
|
19 | * Replaced elasticsearch client | |||
|
20 | * Bumped a most deps to latest version | |||
|
21 | * Preparing to move from elasticsearch 2.x to modern versions |
@@ -0,0 +1,105 b'' | |||||
|
1 | AppEnlight | |||
|
2 | ----------- | |||
|
3 | ||||
|
4 | Automatic Installation | |||
|
5 | ====================== | |||
|
6 | ||||
|
7 | Use the ansible scripts in the `automation` repository to build complete instance of application | |||
|
8 | You can also use `packer` files in `automation/packer` to create whole VM's for KVM and VMWare. | |||
|
9 | ||||
|
10 | Manual Installation | |||
|
11 | =================== | |||
|
12 | ||||
|
13 | To run the app you need to have meet prerequsites: | |||
|
14 | ||||
|
15 | - python 3.5+ | |||
|
16 | - running elasticsearch (2.3+/2.4 tested) | |||
|
17 | - running postgresql (9.5+ required) | |||
|
18 | - running redis | |||
|
19 | ||||
|
20 | Install the app by performing | |||
|
21 | ||||
|
22 | pip install -r requirements.txt | |||
|
23 | ||||
|
24 | python setup.py develop | |||
|
25 | ||||
|
26 | Install the appenlight uptime plugin (`ae_uptime_ce` package from `appenlight-uptime-ce` repository). | |||
|
27 | ||||
|
28 | After installing the application you need to perform following steps: | |||
|
29 | ||||
|
30 | 1. (optional) generate production.ini (or use a copy of development.ini) | |||
|
31 | ||||
|
32 | ||||
|
33 | appenlight-make-config production.ini | |||
|
34 | ||||
|
35 | 2. Setup database structure: | |||
|
36 | ||||
|
37 | ||||
|
38 | appenlight-migratedb -c FILENAME.ini | |||
|
39 | ||||
|
40 | 3. To configure elasticsearch: | |||
|
41 | ||||
|
42 | ||||
|
43 | appenlight-reindex-elasticsearch -t all -c FILENAME.ini | |||
|
44 | ||||
|
45 | 4. Create base database objects | |||
|
46 | ||||
|
47 | (run this command with help flag to see how to create administrator user) | |||
|
48 | ||||
|
49 | ||||
|
50 | appenlight-initializedb -c FILENAME.ini | |||
|
51 | ||||
|
52 | 5. Generate static assets | |||
|
53 | ||||
|
54 | ||||
|
55 | appenlight-static -c FILENAME.ini | |||
|
56 | ||||
|
57 | Running application | |||
|
58 | =================== | |||
|
59 | ||||
|
60 | To run the main app: | |||
|
61 | ||||
|
62 | pserve development.ini | |||
|
63 | ||||
|
64 | To run celery workers: | |||
|
65 | ||||
|
66 | celery worker -A appenlight.celery -Q "reports,logs,metrics,default" --ini FILENAME.ini | |||
|
67 | ||||
|
68 | To run celery beat: | |||
|
69 | ||||
|
70 | celery beat -A appenlight.celery --ini FILENAME.ini | |||
|
71 | ||||
|
72 | To run appenlight's uptime plugin: | |||
|
73 | ||||
|
74 | appenlight-uptime-monitor -c FILENAME.ini | |||
|
75 | ||||
|
76 | Real-time Notifications | |||
|
77 | ======================= | |||
|
78 | ||||
|
79 | You should also run the `channelstream websocket server for real-time notifications | |||
|
80 | ||||
|
81 | channelstream -i filename.ini | |||
|
82 | ||||
|
83 | Testing | |||
|
84 | ======= | |||
|
85 | ||||
|
86 | To run test suite: | |||
|
87 | ||||
|
88 | py.test appenlight/tests/tests.py --cov appenlight (this looks for testing.ini in repo root) | |||
|
89 | ||||
|
90 | ||||
|
91 | Development | |||
|
92 | =========== | |||
|
93 | ||||
|
94 | To develop appenlight frontend: | |||
|
95 | ||||
|
96 | cd frontend | |||
|
97 | npm install | |||
|
98 | bower install | |||
|
99 | grunt watch | |||
|
100 | ||||
|
101 | ||||
|
102 | Tagging release | |||
|
103 | =============== | |||
|
104 | ||||
|
105 | bumpversion --current-version 1.1.1 minor --verbose --tag --commit --dry-run |
@@ -1,105 +1,4 b'' | |||||
1 | AppEnlight |
|
1 | Visit: | |
2 | ----------- |
|
|||
3 |
|
2 | |||
4 | Automatic Installation |
|
|||
5 | ====================== |
|
|||
6 |
|
3 | |||
7 | Use the ansible scripts in the `automation` repository to build complete instance of application |
|
4 | [Readme moved to backend directory](../appenlight/blob/master/backend/README.md) | |
8 | You can also use `packer` files in `automation/packer` to create whole VM's for KVM and VMWare. |
|
|||
9 |
|
||||
10 | Manual Installation |
|
|||
11 | =================== |
|
|||
12 |
|
||||
13 | To run the app you need to have meet prerequsites: |
|
|||
14 |
|
||||
15 | - python 3.5+ |
|
|||
16 | - running elasticsearch (2.3+/2.4 tested) |
|
|||
17 | - running postgresql (9.5+ required) |
|
|||
18 | - running redis |
|
|||
19 |
|
||||
20 | Install the app by performing |
|
|||
21 |
|
||||
22 | pip install -r requirements.txt |
|
|||
23 |
|
||||
24 | python setup.py develop |
|
|||
25 |
|
||||
26 | Install the appenlight uptime plugin (`ae_uptime_ce` package from `appenlight-uptime-ce` repository). |
|
|||
27 |
|
||||
28 | After installing the application you need to perform following steps: |
|
|||
29 |
|
||||
30 | 1. (optional) generate production.ini (or use a copy of development.ini) |
|
|||
31 |
|
||||
32 |
|
||||
33 | appenlight-make-config production.ini |
|
|||
34 |
|
||||
35 | 2. Setup database structure: |
|
|||
36 |
|
||||
37 |
|
||||
38 | appenlight-migratedb -c FILENAME.ini |
|
|||
39 |
|
||||
40 | 3. To configure elasticsearch: |
|
|||
41 |
|
||||
42 |
|
||||
43 | appenlight-reindex-elasticsearch -t all -c FILENAME.ini |
|
|||
44 |
|
||||
45 | 4. Create base database objects |
|
|||
46 |
|
||||
47 | (run this command with help flag to see how to create administrator user) |
|
|||
48 |
|
||||
49 |
|
||||
50 | appenlight-initializedb -c FILENAME.ini |
|
|||
51 |
|
||||
52 | 5. Generate static assets |
|
|||
53 |
|
||||
54 |
|
||||
55 | appenlight-static -c FILENAME.ini |
|
|||
56 |
|
||||
57 | Running application |
|
|||
58 | =================== |
|
|||
59 |
|
||||
60 | To run the main app: |
|
|||
61 |
|
||||
62 | pserve development.ini |
|
|||
63 |
|
||||
64 | To run celery workers: |
|
|||
65 |
|
||||
66 | celery worker -A appenlight.celery -Q "reports,logs,metrics,default" --ini FILENAME.ini |
|
|||
67 |
|
||||
68 | To run celery beat: |
|
|||
69 |
|
||||
70 | celery beat -A appenlight.celery --ini FILENAME.ini |
|
|||
71 |
|
||||
72 | To run appenlight's uptime plugin: |
|
|||
73 |
|
||||
74 | appenlight-uptime-monitor -c FILENAME.ini |
|
|||
75 |
|
||||
76 | Real-time Notifications |
|
|||
77 | ======================= |
|
|||
78 |
|
||||
79 | You should also run the `channelstream websocket server for real-time notifications |
|
|||
80 |
|
||||
81 | channelstream -i filename.ini |
|
|||
82 |
|
||||
83 | Testing |
|
|||
84 | ======= |
|
|||
85 |
|
||||
86 | To run test suite: |
|
|||
87 |
|
||||
88 | py.test appenlight/tests/tests.py --cov appenlight (this looks for testing.ini in repo root) |
|
|||
89 |
|
||||
90 |
|
||||
91 | Development |
|
|||
92 | =========== |
|
|||
93 |
|
||||
94 | To develop appenlight frontend: |
|
|||
95 |
|
||||
96 | cd frontend |
|
|||
97 | npm install |
|
|||
98 | bower install |
|
|||
99 | grunt watch |
|
|||
100 |
|
||||
101 |
|
||||
102 | Tagging release |
|
|||
103 | =============== |
|
|||
104 |
|
||||
105 | bumpversion --current-version 1.1.1 minor --verbose --tag --commit --dry-run |
|
@@ -1,89 +1,89 b'' | |||||
1 | import os |
|
1 | import os | |
2 | import re |
|
2 | import re | |
3 |
|
3 | |||
4 | from setuptools import setup, find_packages |
|
4 | from setuptools import setup, find_packages | |
5 |
|
5 | |||
6 | here = os.path.abspath(os.path.dirname(__file__)) |
|
6 | here = os.path.abspath(os.path.dirname(__file__)) | |
7 |
README = open(os.path.join(here, "README. |
|
7 | README = open(os.path.join(here, "README.md")).read() | |
8 |
CHANGES = open(os.path.join(here, "CHANGELOG. |
|
8 | CHANGES = open(os.path.join(here, "CHANGELOG.md")).read() | |
9 |
|
9 | |||
10 | REQUIREMENTS = open(os.path.join(here, "requirements.txt")).readlines() |
|
10 | REQUIREMENTS = open(os.path.join(here, "requirements.txt")).readlines() | |
11 |
|
11 | |||
12 | compiled = re.compile("([^=><]*).*") |
|
12 | compiled = re.compile("([^=><]*).*") | |
13 |
|
13 | |||
14 |
|
14 | |||
15 | def parse_req(req): |
|
15 | def parse_req(req): | |
16 | return compiled.search(req).group(1).strip() |
|
16 | return compiled.search(req).group(1).strip() | |
17 |
|
17 | |||
18 |
|
18 | |||
19 | requires = [_f for _f in map(parse_req, REQUIREMENTS) if _f] |
|
19 | requires = [_f for _f in map(parse_req, REQUIREMENTS) if _f] | |
20 |
|
20 | |||
21 |
|
21 | |||
22 | def _get_meta_var(name, data, callback_handler=None): |
|
22 | def _get_meta_var(name, data, callback_handler=None): | |
23 | import re |
|
23 | import re | |
24 |
|
24 | |||
25 | matches = re.compile(r"(?:%s)\s*=\s*(.*)" % name).search(data) |
|
25 | matches = re.compile(r"(?:%s)\s*=\s*(.*)" % name).search(data) | |
26 | if matches: |
|
26 | if matches: | |
27 | if not callable(callback_handler): |
|
27 | if not callable(callback_handler): | |
28 | callback_handler = lambda v: v |
|
28 | callback_handler = lambda v: v | |
29 |
|
29 | |||
30 | return callback_handler(eval(matches.groups()[0])) |
|
30 | return callback_handler(eval(matches.groups()[0])) | |
31 |
|
31 | |||
32 |
|
32 | |||
33 | with open(os.path.join(here, "src", "appenlight", "__init__.py"), "r") as _meta: |
|
33 | with open(os.path.join(here, "src", "appenlight", "__init__.py"), "r") as _meta: | |
34 | _metadata = _meta.read() |
|
34 | _metadata = _meta.read() | |
35 |
|
35 | |||
36 | with open(os.path.join(here, "VERSION"), "r") as _meta_version: |
|
36 | with open(os.path.join(here, "VERSION"), "r") as _meta_version: | |
37 | __version__ = _meta_version.read().strip() |
|
37 | __version__ = _meta_version.read().strip() | |
38 |
|
38 | |||
39 | __license__ = _get_meta_var("__license__", _metadata) |
|
39 | __license__ = _get_meta_var("__license__", _metadata) | |
40 | __author__ = _get_meta_var("__author__", _metadata) |
|
40 | __author__ = _get_meta_var("__author__", _metadata) | |
41 | __url__ = _get_meta_var("__url__", _metadata) |
|
41 | __url__ = _get_meta_var("__url__", _metadata) | |
42 |
|
42 | |||
43 | found_packages = find_packages("src") |
|
43 | found_packages = find_packages("src") | |
44 | found_packages.append("appenlight.migrations.versions") |
|
44 | found_packages.append("appenlight.migrations.versions") | |
45 | setup( |
|
45 | setup( | |
46 | name="appenlight", |
|
46 | name="appenlight", | |
47 | description="appenlight", |
|
47 | description="appenlight", | |
48 | long_description=README + "\n\n" + CHANGES, |
|
48 | long_description=README + "\n\n" + CHANGES, | |
49 | classifiers=[ |
|
49 | classifiers=[ | |
50 | "Programming Language :: Python", |
|
50 | "Programming Language :: Python", | |
51 | "Framework :: Pylons", |
|
51 | "Framework :: Pylons", | |
52 | "Topic :: Internet :: WWW/HTTP", |
|
52 | "Topic :: Internet :: WWW/HTTP", | |
53 | "Topic :: Internet :: WWW/HTTP :: WSGI :: Application", |
|
53 | "Topic :: Internet :: WWW/HTTP :: WSGI :: Application", | |
54 | ], |
|
54 | ], | |
55 | version=__version__, |
|
55 | version=__version__, | |
56 | license=__license__, |
|
56 | license=__license__, | |
57 | author=__author__, |
|
57 | author=__author__, | |
58 | url=__url__, |
|
58 | url=__url__, | |
59 | keywords="web wsgi bfg pylons pyramid", |
|
59 | keywords="web wsgi bfg pylons pyramid", | |
60 | package_dir={"": "src"}, |
|
60 | package_dir={"": "src"}, | |
61 | packages=found_packages, |
|
61 | packages=found_packages, | |
62 | include_package_data=True, |
|
62 | include_package_data=True, | |
63 | zip_safe=False, |
|
63 | zip_safe=False, | |
64 | test_suite="appenlight", |
|
64 | test_suite="appenlight", | |
65 | install_requires=requires, |
|
65 | install_requires=requires, | |
66 | extras_require={ |
|
66 | extras_require={ | |
67 | "dev": [ |
|
67 | "dev": [ | |
68 | "coverage", |
|
68 | "coverage", | |
69 | "pytest", |
|
69 | "pytest", | |
70 | "pyramid", |
|
70 | "pyramid", | |
71 | "tox", |
|
71 | "tox", | |
72 | "mock", |
|
72 | "mock", | |
73 | "pytest-mock", |
|
73 | "pytest-mock", | |
74 | "webtest", |
|
74 | "webtest", | |
75 | ], |
|
75 | ], | |
76 | "lint": ["black"], |
|
76 | "lint": ["black"], | |
77 | }, |
|
77 | }, | |
78 | entry_points={ |
|
78 | entry_points={ | |
79 | "paste.app_factory": ["main = appenlight:main"], |
|
79 | "paste.app_factory": ["main = appenlight:main"], | |
80 | "console_scripts": [ |
|
80 | "console_scripts": [ | |
81 | "appenlight-cleanup = appenlight.scripts.cleanup:main", |
|
81 | "appenlight-cleanup = appenlight.scripts.cleanup:main", | |
82 | "appenlight-initializedb = appenlight.scripts.initialize_db:main", |
|
82 | "appenlight-initializedb = appenlight.scripts.initialize_db:main", | |
83 | "appenlight-migratedb = appenlight.scripts.migratedb:main", |
|
83 | "appenlight-migratedb = appenlight.scripts.migratedb:main", | |
84 | "appenlight-reindex-elasticsearch = appenlight.scripts.reindex_elasticsearch:main", |
|
84 | "appenlight-reindex-elasticsearch = appenlight.scripts.reindex_elasticsearch:main", | |
85 | "appenlight-static = appenlight.scripts.static:main", |
|
85 | "appenlight-static = appenlight.scripts.static:main", | |
86 | "appenlight-make-config = appenlight.scripts.make_config:main", |
|
86 | "appenlight-make-config = appenlight.scripts.make_config:main", | |
87 | ], |
|
87 | ], | |
88 | }, |
|
88 | }, | |
89 | ) |
|
89 | ) |
1 | NO CONTENT: file was removed |
|
NO CONTENT: file was removed |
1 | NO CONTENT: file was removed |
|
NO CONTENT: file was removed |
General Comments 0
You need to be logged in to leave comments.
Login now