Skip to content

Commit 534d613

Browse files
committed
Merge branch 'master' into update-readme
2 parents 9a82ee1 + eb9c906 commit 534d613

File tree

345 files changed

+1007
-14089
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

345 files changed

+1007
-14089
lines changed

.circle/configure-postgres.sh

Lines changed: 0 additions & 9 deletions
This file was deleted.

.circleci/config.yml

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
# Setup in CircleCI account the following ENV variables:
2-
# PACKAGECLOUD_ORGANIZATION (default: stackstorm)
2+
# PACKAGECLOUD_ORGANIZATION (default: stackstorm)
33
# PACKAGECLOUD_TOKEN
44
version: 2
55
jobs:
@@ -44,7 +44,7 @@ jobs:
4444
integration:
4545
docker:
4646
- image: circleci/python:2.7
47-
- image: mongo:3.4
47+
- image: mongo:4.0
4848
- image: rabbitmq:3
4949
working_directory: ~/st2
5050
steps:
@@ -57,8 +57,8 @@ jobs:
5757
name: Install Mongo Shell
5858
command: |
5959
set -x
60-
sudo apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv 0C49F3730359A14518585931BC711F9BA15703C6
61-
echo "deb http://repo.mongodb.org/apt/debian jessie/mongodb-org/3.4 main" | sudo tee /etc/apt/sources.list.d/mongodb-org-3.4.list
60+
sudo apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv 9DA31620334BD75D9DCB49F368818C72E52529D4
61+
echo "deb http://repo.mongodb.org/apt/debian jessie/mongodb-org/4.0 main" | sudo tee /etc/apt/sources.list.d/mongodb-org-4.0.list
6262
sudo apt-get -qq -y update
6363
sudo apt-get -qq -y install mongodb-org-shell
6464
- run:
@@ -80,7 +80,7 @@ jobs:
8080
lint:
8181
docker:
8282
- image: circleci/python:2.7
83-
- image: mongo:3.4
83+
- image: mongo:4.0
8484
- image: rabbitmq:3
8585
working_directory: ~/st2
8686
steps:

.travis.yml

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -36,7 +36,7 @@ jobs:
3636
# If you rename or reorder make targets in TASK, you may need to adjust:
3737
# scripts/travis/install-requirements.sh
3838
# scripts/travis/run-nightly-make-task-if-exists.sh
39-
- name: "Unit Tests (Python 2.7 MongoDB 3.4)"
39+
- name: "Unit Tests (Python 2.7 MongoDB 4.0)"
4040
python: 2.7
4141
env: TASK=ci-unit CACHE_NAME=py2 COMMAND_THRESHOLD=700
4242

@@ -59,11 +59,11 @@ jobs:
5959
addons:
6060
apt:
6161
sources:
62-
- sourceline: 'deb [arch=amd64] http://repo.mongodb.org/apt/ubuntu xenial/mongodb-org/3.4 multiverse'
63-
key_url: 'https://www.mongodb.org/static/pgp/server-3.4.asc'
62+
- sourceline: 'deb [arch=amd64] http://repo.mongodb.org/apt/ubuntu xenial/mongodb-org/4.0 multiverse'
63+
key_url: 'https://www.mongodb.org/static/pgp/server-4.0.asc'
6464
packages:
65-
- mongodb-org-server=3.4.*
66-
- mongodb-org-shell=3.4.*
65+
- mongodb-org-server=4.0.*
66+
- mongodb-org-shell=4.0.*
6767
- rabbitmq-server
6868
- libffi-dev
6969

@@ -92,7 +92,7 @@ install:
9292
before_script:
9393
# Use a custom mongod.conf which uses various speed optimizations
9494
- sudo cp scripts/travis/mongod.conf /etc/mongod.conf
95-
# Clean up any old MongoDB 3.4 data files laying around and make sure mongodb user can write to it
95+
# Clean up any old MongoDB 4.0 data files laying around and make sure mongodb user can write to it
9696
- sudo rm -rf /var/lib/mongodb ; sudo mkdir /var/lib/mongodb ; sudo chown -R mongodb:mongodb /var/lib/mongodb
9797
- sudo service mongod restart ; sleep 5
9898
- sudo service mongod status

CHANGELOG.rst

Lines changed: 5 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -31,6 +31,8 @@ Changed
3131
that does not exist. It now reports a simplified log for cleaner reading. Addresses and Fixes #4979. (improvement) #4981
3232

3333
Contributed by Justin Sostre (@saucetray)
34+
* The built-in ``st2.action.file_writen`` trigger has been renamed to ``st2.action.file_written``
35+
to fix the typo (bug fix) #4992
3436

3537
Fixed
3638
~~~~~
@@ -74,15 +76,12 @@ Fixed
7476

7577
Contributed by @blag
7678

77-
Changed
78-
~~~~~~~
79-
80-
* The built-in ``st2.action.file_writen`` trigger has been renamed to ``st2.action.file_written``
81-
to fix the typo (bug fix) #4992
82-
8379
Removed
8480
~~~~~~~
8581

82+
* Removed ``Mistral`` workflow engine (deprecation) #5011
83+
84+
Contributed by Amanda McGuinness (@amanda11 Ammeon Solutions)
8685
* Removed ``CentOS 6``/``RHEL 6`` support #4984
8786

8887
Contributed by Amanda McGuinness (@amanda11 Ammeon Solutions)

Makefile

Lines changed: 25 additions & 80 deletions
Original file line numberDiff line numberDiff line change
@@ -22,10 +22,10 @@ BINARIES := bin
2222
# All components are prefixed by st2 and not .egg-info.
2323
COMPONENTS := $(shell ls -a | grep ^st2 | grep -v .egg-info)
2424
COMPONENTS_RUNNERS := $(wildcard contrib/runners/*)
25+
MOCK_RUNNERS := $(wildcard st2common/tests/runners/*)
2526
COMPONENTS_WITHOUT_ST2TESTS := $(shell ls -a | grep ^st2 | grep -v .egg-info | grep -v st2tests | grep -v st2exporter)
2627

2728
COMPONENTS_WITH_RUNNERS := $(COMPONENTS) $(COMPONENTS_RUNNERS)
28-
COMPONENTS_WITH_RUNNERS_WITHOUT_MISTRAL_RUNNER := $(foreach component,$(filter-out contrib/runners/mistral_v2,$(COMPONENTS_WITH_RUNNERS)),$(component))
2929

3030
COMPONENTS_TEST_DIRS := $(wildcard st2*/tests) $(wildcard contrib/runners/*/tests)
3131

@@ -43,12 +43,11 @@ space_char :=
4343
space_char +=
4444
COMPONENT_PYTHONPATH = $(subst $(space_char),:,$(realpath $(COMPONENTS_WITH_RUNNERS)))
4545
COMPONENTS_TEST := $(foreach component,$(filter-out $(COMPONENT_SPECIFIC_TESTS),$(COMPONENTS_WITH_RUNNERS)),$(component))
46-
COMPONENTS_TEST_WITHOUT_MISTRAL_RUNNER := $(foreach component,$(filter-out $(COMPONENT_SPECIFIC_TESTS),$(COMPONENTS_WITH_RUNNERS_WITHOUT_MISTRAL_RUNNER)),$(component))
4746
COMPONENTS_TEST_COMMA := $(subst $(slash),$(dot),$(subst $(space_char),$(comma),$(COMPONENTS_TEST)))
4847
COMPONENTS_TEST_MODULES := $(subst $(slash),$(dot),$(COMPONENTS_TEST_DIRS))
4948
COMPONENTS_TEST_MODULES_COMMA := $(subst $(space_char),$(comma),$(COMPONENTS_TEST_MODULES))
5049

51-
COVERAGE_GLOBS := .coverage.unit.* .coverage.integration.* .coverage.mistral.*
50+
COVERAGE_GLOBS := .coverage.unit.* .coverage.integration.*
5251
COVERAGE_GLOBS_QUOTED := $(foreach glob,$(COVERAGE_GLOBS),'$(glob)')
5352

5453
REQUIREMENTS := test-requirements.txt requirements.txt
@@ -114,8 +113,6 @@ play:
114113
@echo
115114
@echo COMPONENTS_WITH_RUNNERS=$(COMPONENTS_WITH_RUNNERS)
116115
@echo
117-
@echo COMPONENTS_WITH_RUNNERS_WITHOUT_MISTRAL_RUNNER=$(COMPONENTS_WITH_RUNNERS_WITHOUT_MISTRAL_RUNNER)
118-
@echo
119116
@echo COMPONENTS_TEST=$(COMPONENTS_TEST)
120117
@echo
121118
@echo COMPONENTS_TEST_COMMA=$(COMPONENTS_TEST_COMMA)
@@ -126,8 +123,6 @@ play:
126123
@echo
127124
@echo COMPONENTS_TEST_MODULES_COMMA=$(COMPONENTS_TEST_MODULES_COMMA)
128125
@echo
129-
@echo COMPONENTS_TEST_WITHOUT_MISTRAL_RUNNER=$(COMPONENTS_TEST_WITHOUT_MISTRAL_RUNNER)
130-
@echo
131126
@echo COMPONENT_PYTHONPATH=$(COMPONENT_PYTHONPATH)
132127
@echo
133128
@echo TRAVIS_PULL_REQUEST=$(TRAVIS_PULL_REQUEST)
@@ -163,6 +158,18 @@ install-runners:
163158
(. $(VIRTUALENV_DIR)/bin/activate; cd $$component; python setup.py develop --no-deps); \
164159
done
165160

161+
.PHONY: install-mock-runners
162+
install-mock-runners:
163+
@echo ""
164+
@echo "================== INSTALL MOCK RUNNERS ===================="
165+
@echo ""
166+
@for component in $(MOCK_RUNNERS); do \
167+
echo "==========================================================="; \
168+
echo "Installing mock runner:" $$component; \
169+
echo "==========================================================="; \
170+
(. $(VIRTUALENV_DIR)/bin/activate; cd $$component; python setup.py develop --no-deps); \
171+
done
172+
166173
.PHONY: check-requirements
167174
.check-requirements:
168175
@echo
@@ -455,16 +462,6 @@ compilepy3:
455462
@mongo --eval "rs.initiate()"
456463
@sleep 15
457464

458-
.PHONY: .cleanmysql
459-
.cleanmysql:
460-
@echo "==================== cleanmysql ===================="
461-
@echo "----- Dropping all Mistral MYSQL databases -----"
462-
@mysql -uroot -pStackStorm -e "DROP DATABASE IF EXISTS mistral"
463-
@mysql -uroot -pStackStorm -e "CREATE DATABASE mistral"
464-
@mysql -uroot -pStackStorm -e "GRANT ALL PRIVILEGES ON mistral.* TO 'mistral'@'127.0.0.1' IDENTIFIED BY 'StackStorm'"
465-
@mysql -uroot -pStackStorm -e "FLUSH PRIVILEGES"
466-
@/opt/openstack/mistral/.venv/bin/python /opt/openstack/mistral/tools/sync_db.py --config-file /etc/mistral/mistral.conf
467-
468465
.PHONY: .cleanrabbitmq
469466
.cleanrabbitmq:
470467
@echo "==================== cleanrabbitmq ===================="
@@ -479,7 +476,7 @@ compilepy3:
479476
@echo "Removing all coverage results directories"
480477
@echo
481478
rm -rf .coverage $(COVERAGE_GLOBS) \
482-
.coverage.unit .coverage.integration .coverage.mistral
479+
.coverage.unit .coverage.integration
483480

484481
.PHONY: distclean
485482
distclean: clean
@@ -524,7 +521,7 @@ distclean: clean
524521
@echo "==========================================================="
525522

526523
.PHONY: requirements
527-
requirements: virtualenv .requirements .sdist-requirements install-runners
524+
requirements: virtualenv .requirements .sdist-requirements install-runners install-mock-runners
528525
@echo
529526
@echo "==================== requirements ===================="
530527
@echo
@@ -567,6 +564,12 @@ requirements: virtualenv .requirements .sdist-requirements install-runners
567564
# make targets. This speeds up the build
568565
(cd ${ROOT_DIR}/st2common; ${ROOT_DIR}/$(VIRTUALENV_DIR)/bin/python setup.py develop --no-deps)
569566

567+
# Install st2auth to register SSO drivers
568+
# NOTE: We pass --no-deps to the script so we don't install all the
569+
# package dependencies which are already installed as part of "requirements"
570+
# make targets. This speeds up the build
571+
(cd ${ROOT_DIR}/st2auth; ${ROOT_DIR}/$(VIRTUALENV_DIR)/bin/python setup.py develop --no-deps)
572+
570573
# Some of the tests rely on submodule so we need to make sure submodules are check out
571574
git submodule update --recursive --remote
572575

@@ -663,7 +666,7 @@ endif
663666
@echo
664667
@echo "----- Dropping st2-test db -----"
665668
@mongo st2-test --eval "db.dropDatabase();"
666-
for component in $(COMPONENTS_TEST_WITHOUT_MISTRAL_RUNNER); do\
669+
for component in $(COMPONENTS_TEST); do\
667670
echo "==========================================================="; \
668671
echo "Running tests in" $$component; \
669672
echo "-----------------------------------------------------------"; \
@@ -814,43 +817,8 @@ endif
814817
.PHONY: .itests-coverage-html
815818
.itests-coverage-html: .integration-tests-coverage-html
816819

817-
.PHONY: mistral-itests
818-
mistral-itests: requirements .mistral-itests
819-
820-
.PHONY: .mistral-itests
821-
.mistral-itests:
822-
@echo
823-
@echo "==================== MISTRAL integration tests ===================="
824-
@echo "The tests assume both st2 and mistral are running on 127.0.0.1."
825-
@echo
826-
. $(VIRTUALENV_DIR)/bin/activate; nosetests $(NOSE_OPTS) -s -v st2tests/integration/mistral || exit 1;
827-
828-
.PHONY: .run-mistral-itests-coverage
829-
ifdef INCLUDE_TESTS_IN_COVERAGE
830-
.run-mistral-itests-coverage: NOSE_COVERAGE_PACKAGES := $(NOSE_COVERAGE_PACKAGES),st2tests.mistral.integration
831-
endif
832-
.run-mistral-itests-coverage:
833-
@echo
834-
@echo "==================== MISTRAL integration tests with coverage ===================="
835-
@echo "The tests assume both st2 and mistral are running on 127.0.0.1."
836-
@echo
837-
. $(VIRTUALENV_DIR)/bin/activate; \
838-
COVERAGE_FILE=.coverage.mistral.integration \
839-
nosetests $(NOSE_OPTS) -s -v $(NOSE_COVERAGE_FLAGS) \
840-
$(NOSE_COVERAGE_PACKAGES) \
841-
st2tests/integration/mistral || exit 1;
842-
843-
.coverage.mistral.integration:
844-
if [ ! -e .coverage.mistral.integration ]; then \
845-
make .run-mistral-itests-coverage; \
846-
fi
847-
848-
.PHONY: .mistral-itests-coverage-html
849-
.mistral-itests-coverage-html: .coverage.mistral.integration
850-
. $(VIRTUALENV_DIR)/bin/activate; COVERAGE_FILE=.coverage.mistral.integration coverage html
851-
852820
.PHONY: .coverage-combine
853-
.coverage-combine: .run-unit-tests-coverage .run-integration-tests-coverage .run-mistral-itests-coverage
821+
.coverage-combine: .run-unit-tests-coverage .run-integration-tests-coverage
854822
. $(VIRTUALENV_DIR)/bin/activate; coverage combine $(COVERAGE_GLOBS)
855823

856824
# This is a real target, but we need to do our own make trickery in case some
@@ -992,7 +960,7 @@ debs:
992960

993961

994962
.PHONY: ci
995-
ci: ci-checks ci-unit ci-integration ci-mistral ci-packs-tests
963+
ci: ci-checks ci-unit ci-integration ci-packs-tests
996964

997965
.PHONY: ci-checks
998966
ci-checks: compile .generated-files-check .pylint .flake8 check-requirements check-sdist-requirements .st2client-dependencies-check .st2common-circular-dependencies-check circle-lint-api-spec .rst-check .st2client-install-check check-python-packages
@@ -1011,13 +979,6 @@ ci-py3-packs-tests:
1011979
@echo
1012980
NOSE_WITH_TIMER=$(NOSE_WITH_TIMER) tox -e py36-packs -vv
1013981

1014-
.PHONY: ci-py3-unit-nightly
1015-
ci-py3-unit-nightly:
1016-
@echo
1017-
@echo "==================== ci-py3-unit ===================="
1018-
@echo
1019-
NOSE_WITH_TIMER=$(NOSE_WITH_TIMER) tox -e py36-unit-nightly -vv
1020-
1021982
.PHONY: ci-py3-integration
1022983
ci-py3-integration: requirements .ci-prepare-integration .ci-py3-integration
1023984

@@ -1067,15 +1028,6 @@ ci-py3-integration: requirements .ci-prepare-integration .ci-py3-integration
10671028
.PHONY: ci-unit
10681029
ci-unit: .unit-tests-coverage-html
10691030

1070-
.PHONY: ci-unit-nightly
1071-
ci-unit-nightly:
1072-
# NOTE: We run mistral runner checks only as part of a nightly build to speed up
1073-
# non nightly builds (Mistral will be deprecated in the future)
1074-
@echo
1075-
@echo "============== ci-unit-nightly =============="
1076-
@echo
1077-
. $(VIRTUALENV_DIR)/bin/activate; nosetests $(NOSE_OPTS) -s -v contrib/runners/mistral_v2/tests/unit
1078-
10791031
.PHONY: .ci-prepare-integration
10801032
.ci-prepare-integration:
10811033
sudo -E ./scripts/travis/prepare-integration.sh
@@ -1086,13 +1038,6 @@ ci-integration: .ci-prepare-integration .itests-coverage-html
10861038
.PHONY: ci-runners
10871039
ci-runners: .ci-prepare-integration .runners-itests-coverage-html
10881040

1089-
.PHONY: .ci-prepare-mistral
1090-
.ci-prepare-mistral:
1091-
sudo -E ./scripts/travis/setup-mistral.sh
1092-
1093-
.PHONY: ci-mistral
1094-
ci-mistral: .ci-prepare-integration .ci-prepare-mistral .mistral-itests-coverage-html
1095-
10961041
.PHONY: ci-orquesta
10971042
ci-orquesta: .ci-prepare-integration .orquesta-itests-coverage-html
10981043

OWNERS.md

Lines changed: 10 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -12,8 +12,6 @@ This page lists active project maintainers and their areas of expertise. This ca
1212
Responsible for Project Strategy, External Relations, Organizational aspects, Partnerships and Future.
1313
* Dmitri Zimine ([@dzimine](https://github.com/dzimine/)) <<dzimine@stackstorm.com>>
1414
- StackStorm co-founder. External Relations, Leadership.
15-
* Lindsay Hill ([@LindsayHill](https://github.com/LindsayHill)) <<lindsay@stackstorm.com>>
16-
- External Relations, Plans, Documentation, Community.
1715

1816
# Senior Maintainers **
1917
###### 2 vote points
@@ -32,9 +30,11 @@ Have deep platform knowledge & experience and demonstrate technical leadership a
3230

3331
# Maintainers *
3432
###### 1 vote points
35-
Being part of Technical Steering Committee (TSC) [@StackStorm/maintainers](https://github.com/orgs/StackStorm/teams/maintainers) provide significant and reliable value to the project helping it grow and improve through development and maintenance.
33+
Being part of Technical Steering Committee (TSC) [@StackStorm/maintainers](https://github.com/orgs/StackStorm/teams/maintainers) provide significant and reliable value to the project helping it grow and improve through development and maintenance. See [Maintainer Responsibilities](https://github.com/StackStorm/st2/blob/master/GOVERNANCE.md#maintainer-responsibilities) for more info.
34+
* Amanda McGuinness ([@amanda11](https://github.com/amanda11)) <<amanda.mcguinness@ammeonsolutions.com>>
35+
- Ansible, Core, deb/rpm packages, CI/CD, Deployments, StackStorm Exchange, Documentation.
3636
* JP Bourget ([@punkrokk](https://github.com/punkrokk)) <<jp.bourget@gmail.com>>
37-
- Systems, deb/rpm, Deployments, Community, StackStorm Exchange, SecOps, CircleCi
37+
- Systems, deb/rpm, Deployments, Community, StackStorm Exchange, SecOps, CircleCI.
3838
* Mick McGrath ([@mickmcgrath13](https://github.com/mickmcgrath13)) <<mick@bitovi.com>>
3939
- Systems, ST2 Exchange. [Case Study](https://stackstorm.com/case-study-bitovi/).
4040
* Nick Maludy ([@nmaludy](https://github.com/nmaludy)) <<nmaludy@gmail.com>>
@@ -44,14 +44,15 @@ Being part of Technical Steering Committee (TSC) [@StackStorm/maintainers](https
4444

4545
# Contributors
4646
Contributors are using and occasionally contributing back to the project, might be active in conversations or express their opinion on the project’s direction.
47-
They're not part of the TSC voting process, but appreciated for their contribution, involvement and may become Maintainers in future.
48-
<!-- [@StackStorm/contributors](https://github.com/orgs/StackStorm/teams/contributors) are invited to StackStorm Github organization and we appreciate their contribution and involvement. -->
49-
* Amanda McGuinness ([@amanda11](https://github.com/amanda11)) - StackStorm Exchange, Ansible, ChatOps, Documentation, core.
47+
They're not part of the TSC voting process, but appreciated for their contribution, involvement and may become Maintainers in the future depending on their effort and involvement. See [How to become a Maintainer?](https://github.com/StackStorm/st2/blob/master/GOVERNANCE.md#how-to-become-a-maintainer)
48+
[@StackStorm/contributors](https://github.com/orgs/StackStorm/teams/contributors) are invited to StackStorm Github organization and have permissions to help triage the Issues and review PRs.
49+
* AJ Jonen ([@guzzijones](https://github.com/guzzijones)) - ST2 Web UI, Orquesta, Core.
5050
* Carlos ([@nzlosh](https://github.com/nzlosh)) - Chatops, Errbot, Community, Discussions, StackStorm Exchange.
5151
* Hiroyasu Ohyama ([@userlocalhost](https://github.com/userlocalhost)) - Orquesta, Workflows, st2 Japan Community. [Case Study](https://stackstorm.com/case-study-dmm/).
5252
* Jon Middleton ([@jjm](https://github.com/jjm)) - StackStorm Exchange, Core, Discussions.
53-
* Tristan Struthers ([@trstruth](https://github.com/trstruth)) - Docker, K8s, Orquesta, Community.
5453
* Marcel Weinberg ([@winem](https://github.com/winem)) - Community, Docker, Core.
54+
* Sheshagiri Rao Mallipedhi ([@sheshagiri](https://github.com/sheshagiri)) - Docker, Core, StackStorm Exchange.
55+
* Tristan Struthers ([@trstruth](https://github.com/trstruth)) - Docker, K8s, Orquesta, Community.
5556

5657
# Friends
5758
People that are currently not very active maintainers/contributors but who participated in and formed the project we have today.
@@ -72,6 +73,7 @@ Thank you, Friends!
7273
* Johan Dahlberg ([@johandahlberg](https://github.com/johandahlberg)) - Using st2 for Bioinformatics/Science project, providing feedback & contributions in Ansible, Community, Workflows. [Case Study](https://stackstorm.com/case-study-scilifelab/).
7374
* Johan Hermansson ([@johanherman](https://github.com/johanherman)) - Using st2 for Bioinformatics/Science project, feedback & contributions in Ansible, Community, Workflows. [Case Study](https://stackstorm.com/case-study-scilifelab/).
7475
* Lakshmi Kannan ([@lakshmi-kannan](https://github.com/lakshmi-kannan)) - early Stormer. Initial Core platform architecture, scalability, reliability, Team Leadership during the project hard times.
76+
* Lindsay Hill ([@LindsayHill](https://github.com/LindsayHill)) - ex StackStorm product manager that made a significant impact building an ecosystem we see today.
7577
* Manas Kelshikar ([@manasdk](https://github.com/manasdk)) - ex Stormer. Developed (well) early core platform features.
7678
* Vineesh Jain ([@VineeshJain](https://github.com/VineeshJain)) - ex Stormer. Community, Tests, Core, QA.
7779
* Warren Van Winckel ([@warrenvw](https://github.com/warrenvw)) - ex Stormer. Docker, Kubernetes, Vagrant, Infrastructure.

0 commit comments

Comments
 (0)