# OPTION 1: list of transformations and containers --------- YAML --------- transformations: - namespace: example name: keg version: "1.0" profiles: - [env, "APP_HOME", /tmp/myscratch] - [env, JAVA_HOME, /opt/java/1.6] # alternatively, a profile could be an object # - namespace: env # key: APP_HOME # value: /tmp/myscratch # sites: - name: isi type: INSTALLED pfn: /path/to/keg sys-info: arch: X86 os: LINUX profiles: - [env, Hello, World] - [env, JAVA_HOME, /bin/java.1.6] container: centos-pegasus containers: - name: centos-pegasus type: docker image: docker:///rynge/montage:latest mount: /Volumes/Work/lfs1:/shared-data/:ro profiles: - [env, JAVA_HOME, /opt/java/1.6] --------- SCHEMA --------- { "definitions": { "sys-info": { "type": "object", "properties": { "arch": { "type": "string", "default": "X86", "enum": ["X86", "X86_64", "SPARCV7", "SPARCV9", "AIX", "PPC"] }, "os": { "type": "string", "default": "LINUX", "enum": ["LINUX", "SUNOS", "MACOSX"] }, "osrelease": { "type": "string" }, "osversion": { "type": "string" }, "glibc": { "type": "string" } }, "required": ["arch", "os"] }, "profile": { "description": "A profiles structured as [, , ]", "type": "array", "items": [ { "type": "string", "enum": ["env", "condor", "globus", "dagman", "pegasus"] }, { "type": "string", "pattern": "^[a-zA-Z_][a-zA-Z0-9_]*$" }, { "type": "string"} ], "minItems": 3, "maxItems": 3 }, "profiles": { "type": "array", "items": { "$ref": "#definitions/profile" } }, "transformation": { "type": "object", "properties": { "namespace": { "type": "string" }, "name": { "type": "string" }, "version": { "type": "string" }, "profiles": { "$ref": "#definitions/profiles" }, "sites": { "type": "array", "items": { "type": "object", "properties": { "name": { "type": "string" }, "sys-info": { "$ref": "#definitions/sys-info" }, "pfn": { "type": "string" }, "profiles": { "$ref": "#definitions/profiles" }, "type": { "type": "string", "enum": ["STAGEABLE", "INSTALLED"] }, "container": { "type": "string" } }, "required": ["name", "sys-info", "type", "pfn"] }, "minItems": 1 } }, "required": ["name", "sites"] }, "container": { "type": "object", "properties": { "name": { "type": "string" }, "type": { "type": "string", "enum": ["docker", "singularity", "shifter"] }, "image": { "type": "string" }, "image_site": { "type": "string" }, "mount": { "type": "string" }, "profiles": { "$ref": "#definitions/profiles" } }, "required": ["name", "type", "image", "mount"] } }, "type": "object", "properties": { "transformations": { "type": "array", "items": { "$ref": "#definitions/transformation" } }, "containers": { "type": "array", "items": { "$ref": "#definitions/container" } } } } # OPTION 2: list of transformations and containers, sys-info attributes # are part of site --------- YAML --------- transformations: - namespace: example name: keg version: "1.0" profiles: - [env, "APP_HOME", /tmp/myscratch] - [env, JAVA_HOME, /opt/java/1.6] sites: - name: isi type: INSTALLED pfn: /path/to/keg arch: X86 os: LINUX profiles: - [env, Hello, World] - [env, JAVA_HOME, /bin/java.1.6] container: centos-pegasus containers: - name: centos-pegasus type: docker image: docker:///rynge/montage:latest mount: /Volumes/Work/lfs1:/shared-data/:ro profiles: - [env, JAVA_HOME, /opt/java/1.6] --------- SCHEMA --------- { "definitions": { "sys-info": { "type": "object", "properties": { "arch": { "type": "string", "default": "X86", "enum": ["X86", "X86_64", "SPARCV7", "SPARCV9", "AIX", "PPC"] }, "os": { "type": "string", "default": "LINUX", "enum": ["LINUX", "SUNOS", "MACOSX"] }, "osrelease": { "type": "string" }, "osversion": { "type": "string" }, "glibc": { "type": "string" } }, "required": ["arch", "os"] }, "profile": { "description": "A profiles structured as [, , ]", "type": "array", "items": [ { "type": "string", "enum": ["env", "condor", "globus", "dagman", "pegasus"] }, { "type": "string", "pattern": "^[a-zA-Z_][a-zA-Z0-9_]*$" }, { "type": "string"} ], "minItems": 3, "maxItems": 3 }, "profiles": { "type": "array", "items": { "$ref": "#definitions/profile" } }, "transformation": { "type": "object", "properties": { "namespace": { "type": "string" }, "name": { "type": "string" }, "version": { "type": "string" }, "profiles": { "$ref": "#definitions/profiles" }, "sites": { "type": "array", "items": { "type": "object", "properties": { "name": { "type": "string" }, "arch": { "type": "string", "default": "X86_64", "enum": ["X86", "X86_64", "SPARCV7", "SPARCV9", "AIX", "PPC"] }, "os": { "type": "string", "default": "LINUX", "enum": ["LINUX", "SUNOS", "MACOSX"] }, "osrelease": { "type": "string" }, "osversion": { "type": "string" }, "glibc": { "type": "string" }, "pfn": { "type": "string" }, "profiles": { "$ref": "#definitions/profiles" }, "type": { "type": "string", "enum": ["STAGEABLE", "INSTALLED"] }, "container": { "type": "string" } }, "required": ["name", "type", "pfn"] }, "minItems": 1 } }, "required": ["name", "sites"] }, "container": { "type": "object", "properties": { "name": { "type": "string" }, "type": { "type": "string", "enum": ["docker", "singularity", "shifter"] }, "image": { "type": "string" }, "image_site": { "type": "string" }, "mount": { "type": "string" }, "profiles": { "$ref": "#definitions/profiles" } }, "required": ["name", "type", "image", "mount"] } }, "type": "object", "properties": { "transformations": { "type": "array", "items": { "$ref": "#definitions/transformation" } }, "containers": { "type": "array", "items": { "$ref": "#definitions/container" } } } }