├── .dockerignore ├── .flake8 ├── .gitignore ├── .gitlab-ci.yml ├── .pylintrc ├── Dockerfile ├── Dockerfile.local ├── LICENSE ├── README.md ├── Settings.py ├── __init__.py ├── docs └── architecture.png ├── examples ├── mongo-3-replicas-from-latest-backup.yaml ├── mongo-3-replicas-from-specific-backup.yaml ├── mongo-3-replicas.yaml └── mongo-5-replicas.yaml ├── kubernetes └── operators │ └── mongo-operator │ ├── cluster-role-binding.yaml │ ├── cluster-role.yaml │ ├── deployment.yaml │ └── service-account.yaml ├── main.py ├── mongoOperator ├── ClusterManager.py ├── MongoOperator.py ├── __init__.py ├── helpers │ ├── BackupHelper.py │ ├── IgnoreIfExists.py │ ├── KubernetesResources.py │ ├── MongoResources.py │ ├── RestoreHelper.py │ ├── __init__.py │ ├── listeners │ │ ├── __init__.py │ │ └── mongo │ │ │ ├── CommandLogger.py │ │ │ ├── HeartbeatListener.py │ │ │ ├── ServerLogger.py │ │ │ ├── TopologyListener.py │ │ │ └── __init__.py │ └── resourceCheckers │ │ ├── AdminSecretChecker.py │ │ ├── BaseResourceChecker.py │ │ ├── ServiceChecker.py │ │ ├── StatefulSetChecker.py │ │ └── __init__.py ├── models │ ├── BaseModel.py │ ├── V1MongoClusterConfiguration.py │ ├── V1MongoClusterConfigurationSpec.py │ ├── V1MongoClusterConfigurationSpecBackups.py │ ├── V1MongoClusterConfigurationSpecBackupsGCS.py │ ├── V1MongoClusterConfigurationSpecMongoDB.py │ ├── V1ServiceAccountRef.py │ ├── __init__.py │ └── fields.py └── services │ ├── KubernetesService.py │ ├── MongoService.py │ └── __init__.py ├── mongo_crd.yaml ├── pytest.ini ├── requirements-testing.txt ├── requirements.txt └── tests ├── TestMongoOperator.py ├── __init__.py ├── fixtures └── mongo_responses │ ├── createUser-ok.json │ ├── initiate-ok.json │ └── replica-status-ok.json ├── helpers ├── TestAdminSecretChecker.py ├── TestBackupChecker.py ├── TestBaseResourceChecker.py ├── TestClusterChecker.py ├── TestCommandLogger.py ├── TestHeartBeatListener.py ├── TestIgnoreIfExists.py ├── TestRestoreHelper.py ├── TestServerLogger.py ├── TestServiceChecker.py ├── TestStatefulSetChecker.py └── TestTopologyListener.py ├── models ├── TestV1MongoClusterConfiguration.py └── __init__.py ├── services ├── TestKubernetesService.py ├── TestMongoService.py └── __init__.py └── test_utils.py /.dockerignore: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Ultimaker/k8s-mongo-operator/HEAD/.dockerignore -------------------------------------------------------------------------------- /.flake8: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Ultimaker/k8s-mongo-operator/HEAD/.flake8 -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Ultimaker/k8s-mongo-operator/HEAD/.gitignore -------------------------------------------------------------------------------- /.gitlab-ci.yml: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Ultimaker/k8s-mongo-operator/HEAD/.gitlab-ci.yml -------------------------------------------------------------------------------- /.pylintrc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Ultimaker/k8s-mongo-operator/HEAD/.pylintrc -------------------------------------------------------------------------------- /Dockerfile: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Ultimaker/k8s-mongo-operator/HEAD/Dockerfile -------------------------------------------------------------------------------- /Dockerfile.local: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Ultimaker/k8s-mongo-operator/HEAD/Dockerfile.local -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Ultimaker/k8s-mongo-operator/HEAD/LICENSE -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Ultimaker/k8s-mongo-operator/HEAD/README.md -------------------------------------------------------------------------------- /Settings.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Ultimaker/k8s-mongo-operator/HEAD/Settings.py -------------------------------------------------------------------------------- /__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Ultimaker/k8s-mongo-operator/HEAD/__init__.py -------------------------------------------------------------------------------- /docs/architecture.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Ultimaker/k8s-mongo-operator/HEAD/docs/architecture.png -------------------------------------------------------------------------------- /examples/mongo-3-replicas-from-latest-backup.yaml: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Ultimaker/k8s-mongo-operator/HEAD/examples/mongo-3-replicas-from-latest-backup.yaml -------------------------------------------------------------------------------- /examples/mongo-3-replicas-from-specific-backup.yaml: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Ultimaker/k8s-mongo-operator/HEAD/examples/mongo-3-replicas-from-specific-backup.yaml -------------------------------------------------------------------------------- /examples/mongo-3-replicas.yaml: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Ultimaker/k8s-mongo-operator/HEAD/examples/mongo-3-replicas.yaml -------------------------------------------------------------------------------- /examples/mongo-5-replicas.yaml: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Ultimaker/k8s-mongo-operator/HEAD/examples/mongo-5-replicas.yaml -------------------------------------------------------------------------------- /kubernetes/operators/mongo-operator/cluster-role-binding.yaml: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Ultimaker/k8s-mongo-operator/HEAD/kubernetes/operators/mongo-operator/cluster-role-binding.yaml -------------------------------------------------------------------------------- /kubernetes/operators/mongo-operator/cluster-role.yaml: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Ultimaker/k8s-mongo-operator/HEAD/kubernetes/operators/mongo-operator/cluster-role.yaml -------------------------------------------------------------------------------- /kubernetes/operators/mongo-operator/deployment.yaml: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Ultimaker/k8s-mongo-operator/HEAD/kubernetes/operators/mongo-operator/deployment.yaml -------------------------------------------------------------------------------- /kubernetes/operators/mongo-operator/service-account.yaml: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Ultimaker/k8s-mongo-operator/HEAD/kubernetes/operators/mongo-operator/service-account.yaml -------------------------------------------------------------------------------- /main.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Ultimaker/k8s-mongo-operator/HEAD/main.py -------------------------------------------------------------------------------- /mongoOperator/ClusterManager.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Ultimaker/k8s-mongo-operator/HEAD/mongoOperator/ClusterManager.py -------------------------------------------------------------------------------- /mongoOperator/MongoOperator.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Ultimaker/k8s-mongo-operator/HEAD/mongoOperator/MongoOperator.py -------------------------------------------------------------------------------- /mongoOperator/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Ultimaker/k8s-mongo-operator/HEAD/mongoOperator/__init__.py -------------------------------------------------------------------------------- /mongoOperator/helpers/BackupHelper.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Ultimaker/k8s-mongo-operator/HEAD/mongoOperator/helpers/BackupHelper.py -------------------------------------------------------------------------------- /mongoOperator/helpers/IgnoreIfExists.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Ultimaker/k8s-mongo-operator/HEAD/mongoOperator/helpers/IgnoreIfExists.py -------------------------------------------------------------------------------- /mongoOperator/helpers/KubernetesResources.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Ultimaker/k8s-mongo-operator/HEAD/mongoOperator/helpers/KubernetesResources.py -------------------------------------------------------------------------------- /mongoOperator/helpers/MongoResources.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Ultimaker/k8s-mongo-operator/HEAD/mongoOperator/helpers/MongoResources.py -------------------------------------------------------------------------------- /mongoOperator/helpers/RestoreHelper.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Ultimaker/k8s-mongo-operator/HEAD/mongoOperator/helpers/RestoreHelper.py -------------------------------------------------------------------------------- /mongoOperator/helpers/__init__.py: -------------------------------------------------------------------------------- 1 | # Copyright (c) 2018 Ultimaker 2 | -------------------------------------------------------------------------------- /mongoOperator/helpers/listeners/__init__.py: -------------------------------------------------------------------------------- 1 | # Copyright (c) 2018 Ultimaker 2 | -------------------------------------------------------------------------------- /mongoOperator/helpers/listeners/mongo/CommandLogger.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Ultimaker/k8s-mongo-operator/HEAD/mongoOperator/helpers/listeners/mongo/CommandLogger.py -------------------------------------------------------------------------------- /mongoOperator/helpers/listeners/mongo/HeartbeatListener.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Ultimaker/k8s-mongo-operator/HEAD/mongoOperator/helpers/listeners/mongo/HeartbeatListener.py -------------------------------------------------------------------------------- /mongoOperator/helpers/listeners/mongo/ServerLogger.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Ultimaker/k8s-mongo-operator/HEAD/mongoOperator/helpers/listeners/mongo/ServerLogger.py -------------------------------------------------------------------------------- /mongoOperator/helpers/listeners/mongo/TopologyListener.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Ultimaker/k8s-mongo-operator/HEAD/mongoOperator/helpers/listeners/mongo/TopologyListener.py -------------------------------------------------------------------------------- /mongoOperator/helpers/listeners/mongo/__init__.py: -------------------------------------------------------------------------------- 1 | # Copyright (c) 2018 Ultimaker 2 | -------------------------------------------------------------------------------- /mongoOperator/helpers/resourceCheckers/AdminSecretChecker.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Ultimaker/k8s-mongo-operator/HEAD/mongoOperator/helpers/resourceCheckers/AdminSecretChecker.py -------------------------------------------------------------------------------- /mongoOperator/helpers/resourceCheckers/BaseResourceChecker.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Ultimaker/k8s-mongo-operator/HEAD/mongoOperator/helpers/resourceCheckers/BaseResourceChecker.py -------------------------------------------------------------------------------- /mongoOperator/helpers/resourceCheckers/ServiceChecker.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Ultimaker/k8s-mongo-operator/HEAD/mongoOperator/helpers/resourceCheckers/ServiceChecker.py -------------------------------------------------------------------------------- /mongoOperator/helpers/resourceCheckers/StatefulSetChecker.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Ultimaker/k8s-mongo-operator/HEAD/mongoOperator/helpers/resourceCheckers/StatefulSetChecker.py -------------------------------------------------------------------------------- /mongoOperator/helpers/resourceCheckers/__init__.py: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /mongoOperator/models/BaseModel.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Ultimaker/k8s-mongo-operator/HEAD/mongoOperator/models/BaseModel.py -------------------------------------------------------------------------------- /mongoOperator/models/V1MongoClusterConfiguration.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Ultimaker/k8s-mongo-operator/HEAD/mongoOperator/models/V1MongoClusterConfiguration.py -------------------------------------------------------------------------------- /mongoOperator/models/V1MongoClusterConfigurationSpec.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Ultimaker/k8s-mongo-operator/HEAD/mongoOperator/models/V1MongoClusterConfigurationSpec.py -------------------------------------------------------------------------------- /mongoOperator/models/V1MongoClusterConfigurationSpecBackups.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Ultimaker/k8s-mongo-operator/HEAD/mongoOperator/models/V1MongoClusterConfigurationSpecBackups.py -------------------------------------------------------------------------------- /mongoOperator/models/V1MongoClusterConfigurationSpecBackupsGCS.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Ultimaker/k8s-mongo-operator/HEAD/mongoOperator/models/V1MongoClusterConfigurationSpecBackupsGCS.py -------------------------------------------------------------------------------- /mongoOperator/models/V1MongoClusterConfigurationSpecMongoDB.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Ultimaker/k8s-mongo-operator/HEAD/mongoOperator/models/V1MongoClusterConfigurationSpecMongoDB.py -------------------------------------------------------------------------------- /mongoOperator/models/V1ServiceAccountRef.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Ultimaker/k8s-mongo-operator/HEAD/mongoOperator/models/V1ServiceAccountRef.py -------------------------------------------------------------------------------- /mongoOperator/models/__init__.py: -------------------------------------------------------------------------------- 1 | # Copyright (c) 2018 Ultimaker 2 | -------------------------------------------------------------------------------- /mongoOperator/models/fields.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Ultimaker/k8s-mongo-operator/HEAD/mongoOperator/models/fields.py -------------------------------------------------------------------------------- /mongoOperator/services/KubernetesService.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Ultimaker/k8s-mongo-operator/HEAD/mongoOperator/services/KubernetesService.py -------------------------------------------------------------------------------- /mongoOperator/services/MongoService.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Ultimaker/k8s-mongo-operator/HEAD/mongoOperator/services/MongoService.py -------------------------------------------------------------------------------- /mongoOperator/services/__init__.py: -------------------------------------------------------------------------------- 1 | # Copyright (c) 2018 Ultimaker 2 | -------------------------------------------------------------------------------- /mongo_crd.yaml: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Ultimaker/k8s-mongo-operator/HEAD/mongo_crd.yaml -------------------------------------------------------------------------------- /pytest.ini: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Ultimaker/k8s-mongo-operator/HEAD/pytest.ini -------------------------------------------------------------------------------- /requirements-testing.txt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Ultimaker/k8s-mongo-operator/HEAD/requirements-testing.txt -------------------------------------------------------------------------------- /requirements.txt: -------------------------------------------------------------------------------- 1 | PyYAML 2 | kubernetes==8.0.0 3 | pymongo 4 | croniter 5 | google-cloud-storage 6 | -------------------------------------------------------------------------------- /tests/TestMongoOperator.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Ultimaker/k8s-mongo-operator/HEAD/tests/TestMongoOperator.py -------------------------------------------------------------------------------- /tests/__init__.py: -------------------------------------------------------------------------------- 1 | # Copyright (c) 2018 Ultimaker 2 | -------------------------------------------------------------------------------- /tests/fixtures/mongo_responses/createUser-ok.json: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Ultimaker/k8s-mongo-operator/HEAD/tests/fixtures/mongo_responses/createUser-ok.json -------------------------------------------------------------------------------- /tests/fixtures/mongo_responses/initiate-ok.json: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Ultimaker/k8s-mongo-operator/HEAD/tests/fixtures/mongo_responses/initiate-ok.json -------------------------------------------------------------------------------- /tests/fixtures/mongo_responses/replica-status-ok.json: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Ultimaker/k8s-mongo-operator/HEAD/tests/fixtures/mongo_responses/replica-status-ok.json -------------------------------------------------------------------------------- /tests/helpers/TestAdminSecretChecker.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Ultimaker/k8s-mongo-operator/HEAD/tests/helpers/TestAdminSecretChecker.py -------------------------------------------------------------------------------- /tests/helpers/TestBackupChecker.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Ultimaker/k8s-mongo-operator/HEAD/tests/helpers/TestBackupChecker.py -------------------------------------------------------------------------------- /tests/helpers/TestBaseResourceChecker.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Ultimaker/k8s-mongo-operator/HEAD/tests/helpers/TestBaseResourceChecker.py -------------------------------------------------------------------------------- /tests/helpers/TestClusterChecker.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Ultimaker/k8s-mongo-operator/HEAD/tests/helpers/TestClusterChecker.py -------------------------------------------------------------------------------- /tests/helpers/TestCommandLogger.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Ultimaker/k8s-mongo-operator/HEAD/tests/helpers/TestCommandLogger.py -------------------------------------------------------------------------------- /tests/helpers/TestHeartBeatListener.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Ultimaker/k8s-mongo-operator/HEAD/tests/helpers/TestHeartBeatListener.py -------------------------------------------------------------------------------- /tests/helpers/TestIgnoreIfExists.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Ultimaker/k8s-mongo-operator/HEAD/tests/helpers/TestIgnoreIfExists.py -------------------------------------------------------------------------------- /tests/helpers/TestRestoreHelper.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Ultimaker/k8s-mongo-operator/HEAD/tests/helpers/TestRestoreHelper.py -------------------------------------------------------------------------------- /tests/helpers/TestServerLogger.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Ultimaker/k8s-mongo-operator/HEAD/tests/helpers/TestServerLogger.py -------------------------------------------------------------------------------- /tests/helpers/TestServiceChecker.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Ultimaker/k8s-mongo-operator/HEAD/tests/helpers/TestServiceChecker.py -------------------------------------------------------------------------------- /tests/helpers/TestStatefulSetChecker.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Ultimaker/k8s-mongo-operator/HEAD/tests/helpers/TestStatefulSetChecker.py -------------------------------------------------------------------------------- /tests/helpers/TestTopologyListener.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Ultimaker/k8s-mongo-operator/HEAD/tests/helpers/TestTopologyListener.py -------------------------------------------------------------------------------- /tests/models/TestV1MongoClusterConfiguration.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Ultimaker/k8s-mongo-operator/HEAD/tests/models/TestV1MongoClusterConfiguration.py -------------------------------------------------------------------------------- /tests/models/__init__.py: -------------------------------------------------------------------------------- 1 | # Copyright (c) 2018 Ultimaker 2 | -------------------------------------------------------------------------------- /tests/services/TestKubernetesService.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Ultimaker/k8s-mongo-operator/HEAD/tests/services/TestKubernetesService.py -------------------------------------------------------------------------------- /tests/services/TestMongoService.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Ultimaker/k8s-mongo-operator/HEAD/tests/services/TestMongoService.py -------------------------------------------------------------------------------- /tests/services/__init__.py: -------------------------------------------------------------------------------- 1 | # Copyright (c) 2018 Ultimaker 2 | -------------------------------------------------------------------------------- /tests/test_utils.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Ultimaker/k8s-mongo-operator/HEAD/tests/test_utils.py --------------------------------------------------------------------------------