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

Auto status change to "Under Review"

Under Review
author

Auto status change to "Under Review"

You need to be logged in to leave comments. Login now