Initial commit
This commit is contained in:
		
							parent
							
								
									b82184fcc5
								
							
						
					
					
						commit
						5d28675e27
					
				
							
								
								
									
										35
									
								
								compose/docker-compose-external-test.yml
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										35
									
								
								compose/docker-compose-external-test.yml
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,35 @@ | ||||
| services: | ||||
|   test: | ||||
|     image: cerc/test-container:local | ||||
|     restart: always | ||||
|     environment: | ||||
|       CERC_SCRIPT_DEBUG: ${CERC_SCRIPT_DEBUG} | ||||
|       CERC_TEST_PARAM_1: ${CERC_TEST_PARAM_1:-FAILED} | ||||
|       CERC_TEST_PARAM_2: "CERC_TEST_PARAM_2_VALUE" | ||||
|       CERC_TEST_PARAM_3: ${CERC_TEST_PARAM_3:-FAILED} | ||||
|     volumes: | ||||
|       - test-data-bind:/data | ||||
|       - test-data-auto:/data2 | ||||
|       - test-config:/config:ro | ||||
|     ports: | ||||
|       - "80" | ||||
| 
 | ||||
|   external-test: | ||||
|     image: cerc/external-test-container:local | ||||
|     restart: always | ||||
|     environment: | ||||
|       CERC_SCRIPT_DEBUG: ${CERC_SCRIPT_DEBUG} | ||||
|       CERC_TEST_PARAM_1: ${CERC_TEST_PARAM_1:-FAILED} | ||||
|       CERC_TEST_PARAM_2: "CERC_TEST_PARAM_2_VALUE" | ||||
|       CERC_TEST_PARAM_3: ${CERC_TEST_PARAM_3:-FAILED} | ||||
|     volumes: | ||||
|       - test-data-bind:/data | ||||
|       - test-data-auto:/data2 | ||||
|       - test-config:/config:ro | ||||
|     ports: | ||||
|       - "80" | ||||
| 
 | ||||
| volumes: | ||||
|   test-data-bind: | ||||
|   test-data-auto: | ||||
|   test-config: | ||||
							
								
								
									
										12
									
								
								container-build/cerc-external-test-container/Dockerfile
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										12
									
								
								container-build/cerc-external-test-container/Dockerfile
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,12 @@ | ||||
| FROM ubuntu:latest | ||||
| 
 | ||||
| RUN apt-get update && export DEBIAN_FRONTEND=noninteractive && export DEBCONF_NOWARNINGS="yes" && \ | ||||
|     apt-get install -y software-properties-common && \ | ||||
|     apt-get install -y nginx && \ | ||||
|     apt-get clean && rm -rf /var/lib/apt/lists/* /tmp/* /var/tmp/* | ||||
| 
 | ||||
| EXPOSE 80 | ||||
| 
 | ||||
| COPY run.sh /app/run.sh | ||||
| 
 | ||||
| ENTRYPOINT ["/app/run.sh"] | ||||
							
								
								
									
										5
									
								
								container-build/cerc-external-test-container/build.sh
									
									
									
									
									
										Executable file
									
								
							
							
						
						
									
										5
									
								
								container-build/cerc-external-test-container/build.sh
									
									
									
									
									
										Executable file
									
								
							| @ -0,0 +1,5 @@ | ||||
| #!/usr/bin/env bash | ||||
| # Build cerc/test-container | ||||
| source ${CERC_CONTAINER_BASE_DIR}/build-base.sh | ||||
| SCRIPT_DIR=$( cd -- "$( dirname -- "${BASH_SOURCE[0]}" )" &> /dev/null && pwd ) | ||||
| docker build -t cerc/external-test-container:local -f ${SCRIPT_DIR}/Dockerfile ${build_command_args} $SCRIPT_DIR | ||||
							
								
								
									
										68
									
								
								container-build/cerc-external-test-container/run.sh
									
									
									
									
									
										Executable file
									
								
							
							
						
						
									
										68
									
								
								container-build/cerc-external-test-container/run.sh
									
									
									
									
									
										Executable file
									
								
							| @ -0,0 +1,68 @@ | ||||
| #!/usr/bin/env bash | ||||
| set -e | ||||
| 
 | ||||
| if [ -n "$CERC_SCRIPT_DEBUG" ]; then | ||||
|   set -x | ||||
| fi | ||||
| 
 | ||||
| echo "Test container starting" | ||||
| 
 | ||||
| DATA_DEVICE=$(df | grep "/data$" | awk '{ print $1 }') | ||||
| if [[ -n "$DATA_DEVICE" ]]; then | ||||
|   echo "/data: MOUNTED dev=${DATA_DEVICE}" | ||||
| else | ||||
|   echo "/data: not mounted" | ||||
| fi | ||||
| 
 | ||||
| DATA2_DEVICE=$(df | grep "/data2$" | awk '{ print $1 }') | ||||
| if [[ -n "$DATA_DEVICE" ]]; then | ||||
|   echo "/data2: MOUNTED dev=${DATA2_DEVICE}" | ||||
| else | ||||
|   echo "/data2: not mounted" | ||||
| fi | ||||
| 
 | ||||
| # Test if the container's filesystem is old (run previously) or new | ||||
| test_file_name="external-exists" | ||||
| for d in /data /data2; do | ||||
|   if [[ -f "$d/${test_file_name}" ]]; | ||||
|   then | ||||
|       TIMESTAMP=`cat $d/${test_file_name}` | ||||
|       echo "$d filesystem is old, created: $TIMESTAMP" | ||||
|   else | ||||
|       echo "$d filesystem is fresh" | ||||
|       echo `date` > $d/${test_file_name} | ||||
|   fi | ||||
| done | ||||
| 
 | ||||
| if [ -n "$CERC_TEST_PARAM_1" ]; then | ||||
|   echo "Test-param-1: ${CERC_TEST_PARAM_1}" | ||||
| fi | ||||
| if [ -n "$CERC_TEST_PARAM_2" ]; then | ||||
|   echo "Test-param-2: ${CERC_TEST_PARAM_2}" | ||||
| fi | ||||
| if [ -n "$CERC_TEST_PARAM_3" ]; then | ||||
|   echo "Test-param-3: ${CERC_TEST_PARAM_3}" | ||||
| fi | ||||
| if [ -n "$CERC_TEST_PARAM_4" ]; then | ||||
|   echo "Test-param-4: ${CERC_TEST_PARAM_4}" | ||||
| fi | ||||
| if [ -n "$CERC_TEST_PARAM_5" ]; then | ||||
|   echo "Test-param-5: ${CERC_TEST_PARAM_5}" | ||||
| fi | ||||
| 
 | ||||
| if [ -d "/config" ]; then | ||||
|   echo "/config: EXISTS" | ||||
|   for f in /config/*; do | ||||
|     if [[ -f "$f" ]] || [[ -L "$f" ]]; then | ||||
|       echo "$f:" | ||||
|       cat "$f" | ||||
|       echo "" | ||||
|       echo "" | ||||
|     fi | ||||
|   done | ||||
| else | ||||
|   echo "/config: does NOT EXIST" | ||||
| fi | ||||
| 
 | ||||
| # Run nginx which will block here forever | ||||
| /usr/sbin/nginx -g "daemon off;" | ||||
							
								
								
									
										4
									
								
								stacks/test-external-stack/README.md
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										4
									
								
								stacks/test-external-stack/README.md
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,4 @@ | ||||
| # An external test stack | ||||
| 
 | ||||
| Used to test stack orchestrator's support for external stacks. | ||||
| 
 | ||||
							
								
								
									
										57
									
								
								stacks/test-external-stack/deploy/commands.py
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										57
									
								
								stacks/test-external-stack/deploy/commands.py
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,57 @@ | ||||
| # Copyright © 2022, 2023 Vulcanize | ||||
| 
 | ||||
| # This program is free software: you can redistribute it and/or modify | ||||
| # it under the terms of the GNU Affero General Public License as published by | ||||
| # the Free Software Foundation, either version 3 of the License, or | ||||
| # (at your option) any later version. | ||||
| 
 | ||||
| # This program is distributed in the hope that it will be useful, | ||||
| # but WITHOUT ANY WARRANTY; without even the implied warranty of | ||||
| # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the | ||||
| # GNU Affero General Public License for more details. | ||||
| 
 | ||||
| # You should have received a copy of the GNU Affero General Public License | ||||
| # along with this program.  If not, see <http:#www.gnu.org/licenses/>. | ||||
| 
 | ||||
| from stack_orchestrator.util import get_yaml | ||||
| from stack_orchestrator.deploy.deploy_types import DeployCommandContext | ||||
| from stack_orchestrator.deploy.stack_state import State | ||||
| from stack_orchestrator.deploy.deploy_util import VolumeMapping, run_container_command | ||||
| from pathlib import Path | ||||
| 
 | ||||
| default_spec_file_content = """config: | ||||
|     test-variable-1: test-value-1 | ||||
| """ | ||||
| 
 | ||||
| 
 | ||||
| # Output a known string to a know file in the bind mounted directory ./container-output-dir | ||||
| # for test purposes -- test checks that the file was written. | ||||
| def setup(command_context: DeployCommandContext, parameters, extra_args): | ||||
|     host_directory = "./container-output-dir" | ||||
|     host_directory_absolute = Path(extra_args[0]).absolute().joinpath(host_directory) | ||||
|     host_directory_absolute.mkdir(parents=True, exist_ok=True) | ||||
|     mounts = [ | ||||
|         VolumeMapping(host_directory_absolute, "/data") | ||||
|     ] | ||||
|     output, status = run_container_command(command_context, "test", "echo output-data > /data/output-file && echo success", mounts) | ||||
| 
 | ||||
| 
 | ||||
| def init(command_context: DeployCommandContext): | ||||
|     yaml = get_yaml() | ||||
|     return yaml.load(default_spec_file_content) | ||||
| 
 | ||||
| 
 | ||||
| def create(command_context: DeployCommandContext, extra_args): | ||||
|     data = "create-command-output-data" | ||||
|     output_file_path = command_context.deployment_dir.joinpath("create-file") | ||||
|     with open(output_file_path, 'w+') as output_file: | ||||
|         output_file.write(data) | ||||
| 
 | ||||
| 
 | ||||
| def get_state(command_context: DeployCommandContext): | ||||
|     print("Here we get state") | ||||
|     return State.CONFIGURED | ||||
| 
 | ||||
| 
 | ||||
| def change_state(command_context: DeployCommandContext): | ||||
|     pass | ||||
							
								
								
									
										11
									
								
								stacks/test-external-stack/stack.yml
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										11
									
								
								stacks/test-external-stack/stack.yml
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,11 @@ | ||||
| version: "1.0" | ||||
| name: external-test | ||||
| description: "An external test stack" | ||||
| repos: | ||||
|   - git.vdb.to/cerc-io/test-project@test-branch | ||||
| containers: | ||||
|   - cerc/test-container | ||||
|   - cerc/external-test-container | ||||
| pods: | ||||
|   - test | ||||
|   - external-test | ||||
		Loading…
	
		Reference in New Issue
	
	Block a user