diff --git a/.gitmodules b/.gitmodules deleted file mode 100644 index bdea2b4de36bba99673796b10c147c5487568a21..0000000000000000000000000000000000000000 --- a/.gitmodules +++ /dev/null @@ -1,4 +0,0 @@ -[submodule "moodle"] - path = moodle - url = https://github.com/moodle/moodle.git - branch = b156b18c721ca797b338c545d6c8ac5694cf8650 diff --git a/.idea/modules.xml b/.idea/modules.xml index e26ffcef06a0f31fb4c3a5f61d6fff63b7bc2c68..d9dd4d4c70580c99db9a21f2eefb263bbe5fbc09 100644 --- a/.idea/modules.xml +++ b/.idea/modules.xml @@ -2,9 +2,9 @@ <project version="4"> <component name="ProjectModuleManager"> <modules> + <module fileurl="file://$PROJECT_DIR$/assignsubmission_autograde.iml" filepath="$PROJECT_DIR$/assignsubmission_autograde.iml" /> <module fileurl="file://$PROJECT_DIR$/autograde.iml" filepath="$PROJECT_DIR$/autograde.iml" /> <module fileurl="file://$PROJECT_DIR$/test-images/demo-python3/demo-python3.iml" filepath="$PROJECT_DIR$/test-images/demo-python3/demo-python3.iml" /> - <module fileurl="file://$PROJECT_DIR$/.idea/moodle-assignsubmission-autograde.iml" filepath="$PROJECT_DIR$/.idea/moodle-assignsubmission-autograde.iml" /> </modules> </component> -</project> +</project> \ No newline at end of file diff --git a/.idea/php.xml b/.idea/php.xml index 0e09af40726c3560d3f3d145e050377be73a1431..33669a0cd1319aa2a80a5997d4005f00f4610372 100644 --- a/.idea/php.xml +++ b/.idea/php.xml @@ -1,5 +1,11 @@ <?xml version="1.0" encoding="UTF-8"?> <project version="4"> + <component name="PhpIncludePathManager"> + <include_path> + <path value="$PROJECT_DIR$/autograde-moodle/vendor/moodle/moodle" /> + <path value="$PROJECT_DIR$/autograde-moodle/vendor/composer" /> + </include_path> + </component> <component name="PhpProjectSharedConfiguration" php_language_level="7.4"> <option name="suggestChangeDefaultLanguageLevel" value="false" /> </component> diff --git a/.idea/vcs.xml b/.idea/vcs.xml index ea42099ae68b53475066a9407ab2461d31ac580b..35eb1ddfbbc029bcab630581847471d7f238ec53 100644 --- a/.idea/vcs.xml +++ b/.idea/vcs.xml @@ -2,6 +2,5 @@ <project version="4"> <component name="VcsDirectoryMappings"> <mapping directory="" vcs="Git" /> - <mapping directory="$PROJECT_DIR$/moodle" vcs="Git" /> </component> </project> \ No newline at end of file diff --git a/Dockerfile-moodle-with-autograde b/Dockerfile-moodle-with-autograde deleted file mode 100644 index a3d182ea3257793591da3f1a9cfa8218c4a5f451..0000000000000000000000000000000000000000 --- a/Dockerfile-moodle-with-autograde +++ /dev/null @@ -1,14 +0,0 @@ -# Use the moodle base image -FROM moodlehq/moodle-php-apache:7.4 - -# Copy the moodle website files into the container -COPY moodle /var/www/html - -# Copy the config file into the same directory -COPY config.php /var/www/html/config.php - -# Copy the plugin files into the container web directory -COPY moodle-assignsubmission-autograde /var/www/html/mod/assign/submission/autograde - -# Set LogLevel to debug in the apache config -RUN sed -i 's/LogLevel warn/LogLevel info/' /etc/apache2/apache2.conf diff --git a/assignsubmission_autograde.iml b/assignsubmission_autograde.iml new file mode 100644 index 0000000000000000000000000000000000000000..409185a0720989bf3451fcbd0e71e4c4cff24df5 --- /dev/null +++ b/assignsubmission_autograde.iml @@ -0,0 +1,10 @@ +<?xml version="1.0" encoding="UTF-8"?> +<module type="WEB_MODULE" version="4"> + <component name="NewModuleRootManager" inherit-compiler-output="true"> + <exclude-output /> + <content url="file://$MODULE_DIR$/autograde-plugins/assignsubmission_autograde"> + <sourceFolder url="file://$MODULE_DIR$/autograde-plugins/assignsubmission_autograde/src" isTestSource="false" packagePrefix="assignsubmission_autograde" /> + </content> + <orderEntry type="sourceFolder" forTests="false" /> + </component> +</module> \ No newline at end of file diff --git a/autograde-plugins/README.md b/autograde-plugins/README.md new file mode 100644 index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 diff --git a/autograde-plugins/assignsubmission_autograde/.gitignore b/autograde-plugins/assignsubmission_autograde/.gitignore new file mode 100644 index 0000000000000000000000000000000000000000..7f0dae58353d9672b1549e7732316387f651123f --- /dev/null +++ b/autograde-plugins/assignsubmission_autograde/.gitignore @@ -0,0 +1,8 @@ +### Composer template +composer.phar +/vendor/ + +# Commit your application's lock file https://getcomposer.org/doc/01-basic-usage.md#commit-your-composer-lock-file-to-version-control +# You may choose to ignore a library lock file http://getcomposer.org/doc/02-libraries.md#lock-file +# composer.lock + diff --git a/autograde-plugins/assignsubmission_autograde/Dockerfile b/autograde-plugins/assignsubmission_autograde/Dockerfile new file mode 100644 index 0000000000000000000000000000000000000000..b5d13d77fe20d928b2829e7f1f07133edc45607b --- /dev/null +++ b/autograde-plugins/assignsubmission_autograde/Dockerfile @@ -0,0 +1,16 @@ +FROM composer:2.8.4 AS composer +FROM php:7.4.33 AS fetch-moodle + +COPY --from=composer /usr/bin/composer /usr/bin/composer + +RUN apt-get update +RUN apt-get install -y --no-install-recommends unzip libzip-dev libpng-dev libicu-dev +RUN docker-php-ext-install zip gd intl +COPY composer.json . +RUN composer install --no-interaction + +FROM moodlehq/moodle-php-apache:7.4 + +COPY --from=fetch-moodle vendor/moodle/moodle /var/www/html +COPY config.php /var/www/html/config.php +COPY src/ /var/www/html/mod/assign/submission/autograde diff --git a/moodle-assignsubmission-autograde/README.md b/autograde-plugins/assignsubmission_autograde/README.md similarity index 100% rename from moodle-assignsubmission-autograde/README.md rename to autograde-plugins/assignsubmission_autograde/README.md diff --git a/autograde-plugins/assignsubmission_autograde/composer.json b/autograde-plugins/assignsubmission_autograde/composer.json new file mode 100644 index 0000000000000000000000000000000000000000..600e507faddeeceef36f66cc3862f50641841cbb --- /dev/null +++ b/autograde-plugins/assignsubmission_autograde/composer.json @@ -0,0 +1,17 @@ +{ + "name": "autograde/assignsubmission_autograde", + "version": "1.2.2", + + "require": { + "php": "^7.4" + }, + + "require-dev": { + "moodle/moodle": "v4.1.15" + }, + "autoload": { + "psr-4": { + "assignsubmission_autograde\\": "src/classes" + } + } +} \ No newline at end of file diff --git a/autograde-plugins/assignsubmission_autograde/composer.lock b/autograde-plugins/assignsubmission_autograde/composer.lock new file mode 100644 index 0000000000000000000000000000000000000000..9ccb01d154263f5f7c527c62424a01daeb0c0f11 --- /dev/null +++ b/autograde-plugins/assignsubmission_autograde/composer.lock @@ -0,0 +1,95 @@ +{ + "_readme": [ + "This file locks the dependencies of your project to a known state", + "Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies", + "This file is @generated automatically" + ], + "content-hash": "0df7b5f6622e1f7172ab8b5d7a6fab80", + "packages": [], + "packages-dev": [ + { + "name": "moodle/moodle", + "version": "v4.1.15", + "source": { + "type": "git", + "url": "https://github.com/moodle/moodle.git", + "reference": "3d7496dacd007bead4a73b602116fd018c329e16" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/moodle/moodle/zipball/3d7496dacd007bead4a73b602116fd018c329e16", + "reference": "3d7496dacd007bead4a73b602116fd018c329e16", + "shasum": "" + }, + "require": { + "ext-ctype": "*", + "ext-curl": "*", + "ext-dom": "*", + "ext-fileinfo": "*", + "ext-gd": "*", + "ext-hash": "*", + "ext-iconv": "*", + "ext-intl": "*", + "ext-json": "*", + "ext-mbstring": "*", + "ext-openssl": "*", + "ext-pcre": "*", + "ext-simplexml": "*", + "ext-spl": "*", + "ext-xml": "*", + "ext-xmlreader": "*", + "ext-zip": "*", + "ext-zlib": "*", + "php": ">=7.4.0" + }, + "require-dev": { + "behat/behat": "3.13.*", + "behat/mink": "^1.10.0", + "behat/mink-goutte-driver": "^2.0", + "friends-of-behat/mink-extension": "^2.7.2", + "mikey179/vfsstream": "1.6.*", + "oleg-andreyev/mink-phpwebdriver": "1.2.*", + "phpunit/phpunit": "9.5.*", + "symfony/process": "^4.4 || ^5.0 || ^6.0" + }, + "suggest": { + "ext-exif": "Enabling Exif PHP extension is recommended, it is used by Moodle to parse image meta data.", + "ext-mysqli": "Needed when Moodle uses MySQL or MariaDB database.", + "ext-oci8": "Needed when Moodle uses Oracle database.", + "ext-pgsql": "Needed when Moodle uses PostgreSQL database.", + "ext-soap": "Enabling SOAP PHP extension is useful for web services and some plugins.", + "ext-sodium": "Enabling Sodium PHP extension is recommended, it is used by Moodle encryption API.", + "ext-sqlsrv": "Needed when Moodle uses MS SQL Server database.", + "ext-tokenizer": "Enabling Tokenizer PHP extension is recommended, it improves Moodle Networking functionality." + }, + "type": "project", + "notification-url": "https://packagist.org/downloads/", + "license": [ + "GPL-3.0-or-later" + ], + "description": "Moodle - the world's open source learning platform", + "homepage": "https://moodle.org", + "support": { + "source": "https://github.com/moodle/moodle/tree/v4.1.15" + }, + "funding": [ + { + "type": "custom" + }, + { + "url": "https://moodle.com/donations/", + "type": "custom" + } + ], + "time": "2024-12-06T06:12:41+00:00" + } + ], + "aliases": [], + "minimum-stability": "stable", + "stability-flags": {}, + "prefer-stable": false, + "prefer-lowest": false, + "platform": {}, + "platform-dev": {}, + "plugin-api-version": "2.6.0" +} diff --git a/config.php b/autograde-plugins/assignsubmission_autograde/config.php similarity index 100% rename from config.php rename to autograde-plugins/assignsubmission_autograde/config.php diff --git a/moodle-assignsubmission-autograde/classes/client/autograde_webservice.php b/autograde-plugins/assignsubmission_autograde/src/classes/client/autograde_webservice.php similarity index 100% rename from moodle-assignsubmission-autograde/classes/client/autograde_webservice.php rename to autograde-plugins/assignsubmission_autograde/src/classes/client/autograde_webservice.php diff --git a/moodle-assignsubmission-autograde/classes/client/model/Assignment.php b/autograde-plugins/assignsubmission_autograde/src/classes/client/model/Assignment.php similarity index 100% rename from moodle-assignsubmission-autograde/classes/client/model/Assignment.php rename to autograde-plugins/assignsubmission_autograde/src/classes/client/model/Assignment.php diff --git a/moodle-assignsubmission-autograde/classes/client/model/Course.php b/autograde-plugins/assignsubmission_autograde/src/classes/client/model/Course.php similarity index 100% rename from moodle-assignsubmission-autograde/classes/client/model/Course.php rename to autograde-plugins/assignsubmission_autograde/src/classes/client/model/Course.php diff --git a/moodle-assignsubmission-autograde/classes/client/model/Environment.php b/autograde-plugins/assignsubmission_autograde/src/classes/client/model/Environment.php similarity index 100% rename from moodle-assignsubmission-autograde/classes/client/model/Environment.php rename to autograde-plugins/assignsubmission_autograde/src/classes/client/model/Environment.php diff --git a/moodle-assignsubmission-autograde/classes/client/model/Registry.php b/autograde-plugins/assignsubmission_autograde/src/classes/client/model/Registry.php similarity index 100% rename from moodle-assignsubmission-autograde/classes/client/model/Registry.php rename to autograde-plugins/assignsubmission_autograde/src/classes/client/model/Registry.php diff --git a/moodle-assignsubmission-autograde/classes/client/model/RegistryCredentials.php b/autograde-plugins/assignsubmission_autograde/src/classes/client/model/RegistryCredentials.php similarity index 100% rename from moodle-assignsubmission-autograde/classes/client/model/RegistryCredentials.php rename to autograde-plugins/assignsubmission_autograde/src/classes/client/model/RegistryCredentials.php diff --git a/moodle-assignsubmission-autograde/classes/client/model/Submission.php b/autograde-plugins/assignsubmission_autograde/src/classes/client/model/Submission.php similarity index 100% rename from moodle-assignsubmission-autograde/classes/client/model/Submission.php rename to autograde-plugins/assignsubmission_autograde/src/classes/client/model/Submission.php diff --git a/moodle-assignsubmission-autograde/classes/client/model/User.php b/autograde-plugins/assignsubmission_autograde/src/classes/client/model/User.php similarity index 100% rename from moodle-assignsubmission-autograde/classes/client/model/User.php rename to autograde-plugins/assignsubmission_autograde/src/classes/client/model/User.php diff --git a/moodle-assignsubmission-autograde/classes/client/request/CreateAssignmentRequest.php b/autograde-plugins/assignsubmission_autograde/src/classes/client/request/CreateAssignmentRequest.php similarity index 100% rename from moodle-assignsubmission-autograde/classes/client/request/CreateAssignmentRequest.php rename to autograde-plugins/assignsubmission_autograde/src/classes/client/request/CreateAssignmentRequest.php diff --git a/moodle-assignsubmission-autograde/classes/client/request/CreateSubmissionRequest.php b/autograde-plugins/assignsubmission_autograde/src/classes/client/request/CreateSubmissionRequest.php similarity index 100% rename from moodle-assignsubmission-autograde/classes/client/request/CreateSubmissionRequest.php rename to autograde-plugins/assignsubmission_autograde/src/classes/client/request/CreateSubmissionRequest.php diff --git a/moodle-assignsubmission-autograde/classes/external/autograde_download_all_submissions.php b/autograde-plugins/assignsubmission_autograde/src/classes/external/autograde_download_all_submissions.php similarity index 100% rename from moodle-assignsubmission-autograde/classes/external/autograde_download_all_submissions.php rename to autograde-plugins/assignsubmission_autograde/src/classes/external/autograde_download_all_submissions.php diff --git a/moodle-assignsubmission-autograde/classes/external/autograde_download_submission.php b/autograde-plugins/assignsubmission_autograde/src/classes/external/autograde_download_submission.php similarity index 100% rename from moodle-assignsubmission-autograde/classes/external/autograde_download_submission.php rename to autograde-plugins/assignsubmission_autograde/src/classes/external/autograde_download_submission.php diff --git a/moodle-assignsubmission-autograde/classes/external/autograde_list_submissions.php b/autograde-plugins/assignsubmission_autograde/src/classes/external/autograde_list_submissions.php similarity index 100% rename from moodle-assignsubmission-autograde/classes/external/autograde_list_submissions.php rename to autograde-plugins/assignsubmission_autograde/src/classes/external/autograde_list_submissions.php diff --git a/moodle-assignsubmission-autograde/classes/external/autograde_submission_info.php b/autograde-plugins/assignsubmission_autograde/src/classes/external/autograde_submission_info.php similarity index 100% rename from moodle-assignsubmission-autograde/classes/external/autograde_submission_info.php rename to autograde-plugins/assignsubmission_autograde/src/classes/external/autograde_submission_info.php diff --git a/moodle-assignsubmission-autograde/classes/external/autograde_upload_feedback.php b/autograde-plugins/assignsubmission_autograde/src/classes/external/autograde_upload_feedback.php similarity index 100% rename from moodle-assignsubmission-autograde/classes/external/autograde_upload_feedback.php rename to autograde-plugins/assignsubmission_autograde/src/classes/external/autograde_upload_feedback.php diff --git a/moodle-assignsubmission-autograde/classes/privacy/provider.php b/autograde-plugins/assignsubmission_autograde/src/classes/privacy/provider.php similarity index 100% rename from moodle-assignsubmission-autograde/classes/privacy/provider.php rename to autograde-plugins/assignsubmission_autograde/src/classes/privacy/provider.php diff --git a/moodle-assignsubmission-autograde/db/access.php b/autograde-plugins/assignsubmission_autograde/src/db/access.php similarity index 100% rename from moodle-assignsubmission-autograde/db/access.php rename to autograde-plugins/assignsubmission_autograde/src/db/access.php diff --git a/moodle-assignsubmission-autograde/db/install.php b/autograde-plugins/assignsubmission_autograde/src/db/install.php similarity index 100% rename from moodle-assignsubmission-autograde/db/install.php rename to autograde-plugins/assignsubmission_autograde/src/db/install.php diff --git a/moodle-assignsubmission-autograde/db/services.php b/autograde-plugins/assignsubmission_autograde/src/db/services.php similarity index 100% rename from moodle-assignsubmission-autograde/db/services.php rename to autograde-plugins/assignsubmission_autograde/src/db/services.php diff --git a/moodle-assignsubmission-autograde/db/uninstall.php b/autograde-plugins/assignsubmission_autograde/src/db/uninstall.php similarity index 100% rename from moodle-assignsubmission-autograde/db/uninstall.php rename to autograde-plugins/assignsubmission_autograde/src/db/uninstall.php diff --git a/moodle-assignsubmission-autograde/lang/en/assignsubmission_autograde.php b/autograde-plugins/assignsubmission_autograde/src/lang/en/assignsubmission_autograde.php similarity index 100% rename from moodle-assignsubmission-autograde/lang/en/assignsubmission_autograde.php rename to autograde-plugins/assignsubmission_autograde/src/lang/en/assignsubmission_autograde.php diff --git a/moodle-assignsubmission-autograde/lang/fr/assignsubmission_autograde.php b/autograde-plugins/assignsubmission_autograde/src/lang/fr/assignsubmission_autograde.php similarity index 100% rename from moodle-assignsubmission-autograde/lang/fr/assignsubmission_autograde.php rename to autograde-plugins/assignsubmission_autograde/src/lang/fr/assignsubmission_autograde.php diff --git a/moodle-assignsubmission-autograde/lib.php b/autograde-plugins/assignsubmission_autograde/src/lib.php similarity index 100% rename from moodle-assignsubmission-autograde/lib.php rename to autograde-plugins/assignsubmission_autograde/src/lib.php diff --git a/moodle-assignsubmission-autograde/locallib.php b/autograde-plugins/assignsubmission_autograde/src/locallib.php similarity index 100% rename from moodle-assignsubmission-autograde/locallib.php rename to autograde-plugins/assignsubmission_autograde/src/locallib.php diff --git a/moodle-assignsubmission-autograde/settings.php b/autograde-plugins/assignsubmission_autograde/src/settings.php similarity index 100% rename from moodle-assignsubmission-autograde/settings.php rename to autograde-plugins/assignsubmission_autograde/src/settings.php diff --git a/moodle-assignsubmission-autograde/utils.php b/autograde-plugins/assignsubmission_autograde/src/utils.php similarity index 100% rename from moodle-assignsubmission-autograde/utils.php rename to autograde-plugins/assignsubmission_autograde/src/utils.php diff --git a/moodle-assignsubmission-autograde/version.php b/autograde-plugins/assignsubmission_autograde/src/version.php similarity index 100% rename from moodle-assignsubmission-autograde/version.php rename to autograde-plugins/assignsubmission_autograde/src/version.php diff --git a/autograde-service/pom.xml b/autograde-service/pom.xml index 9a871e68b4862f8d921b45ed2b9886f99c8a5684..3bacc2695f5a350fffc590627fca634be05b9cd5 100644 --- a/autograde-service/pom.xml +++ b/autograde-service/pom.xml @@ -69,6 +69,11 @@ <groupId>org.springframework.security</groupId> <artifactId>spring-security-ldap</artifactId> </dependency> + <dependency> + <groupId>org.bouncycastle</groupId> + <artifactId>bcpkix-jdk15on</artifactId> + <version>1.70</version> <!-- Use the latest version --> + </dependency> </dependencies> <build> diff --git a/autograde-service/src/main/java/ch/epfl/autograde/config/KubernetesConfig.java b/autograde-service/src/main/java/ch/epfl/autograde/config/KubernetesConfig.java index f6bedc2b394fbcd6c85788762b257cac8f8e0038..aa95788ea44d3ec631b4962102f91fc3847bfcaa 100644 --- a/autograde-service/src/main/java/ch/epfl/autograde/config/KubernetesConfig.java +++ b/autograde-service/src/main/java/ch/epfl/autograde/config/KubernetesConfig.java @@ -1,26 +1,52 @@ package ch.epfl.autograde.config; +import ch.epfl.autograde.properties.AutogradeKubernetesConfig; +import io.fabric8.kubernetes.client.Config; import io.fabric8.kubernetes.client.KubernetesClient; import io.fabric8.kubernetes.client.KubernetesClientBuilder; +import lombok.RequiredArgsConstructor; +import lombok.extern.slf4j.Slf4j; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; +import java.io.IOException; +import java.nio.file.Files; + /** * Configuration and setup of the underlying kubernetes cluster * * @author Dixit Sabharwal (dixit.sabharwal@epfl.ch) * @since 1.0 */ +@Slf4j @Configuration +@RequiredArgsConstructor public class KubernetesConfig { + private final AutogradeKubernetesConfig config; + /** * Provide a client to communicate to the underlying kubernetes cluster. * Uses the ServiceAccount specified in the pod spec to authenticate. */ @Bean - public KubernetesClient kubernetesClient() { - return new KubernetesClientBuilder().build(); + public KubernetesClient kubernetesClient(Config config) { + return new KubernetesClientBuilder() + .withConfig(config) + .build(); + } + + @Bean + protected Config config() throws IOException { + if (config.config() != null) { + log.info("Service will use a pre-configured kubeconfig to communicate with Kubernetes"); + final var cg = Config.fromKubeconfig(Files.readString(config.config())); + cg.setMasterUrl("https://kubernetes:6443"); + return cg; + } else { + log.info("Service will auto-configure to communicate with Kubernetes"); + return Config.autoConfigure(null); + } } } diff --git a/autograde-service/src/main/java/ch/epfl/autograde/properties/AutogradeKubernetesConfig.java b/autograde-service/src/main/java/ch/epfl/autograde/properties/AutogradeKubernetesConfig.java new file mode 100644 index 0000000000000000000000000000000000000000..57ee00f79fbf7cb14c3f494b26c08478d2d8c690 --- /dev/null +++ b/autograde-service/src/main/java/ch/epfl/autograde/properties/AutogradeKubernetesConfig.java @@ -0,0 +1,10 @@ +package ch.epfl.autograde.properties; + +import org.springframework.boot.context.properties.ConfigurationProperties; + +import java.nio.file.Path; + +@ConfigurationProperties(prefix = "autograde.kubernetes") +public record AutogradeKubernetesConfig ( + Path config +) { } diff --git a/autograde-service/src/test/java/ch/epfl/autograde/config/KubernetesConfigTest.java b/autograde-service/src/test/java/ch/epfl/autograde/config/KubernetesConfigTest.java index 767c2b97a4fe368f033daa706ed04a6ffa32d248..090ec720e615f2fcb65a69a25f7a28a72f5c3460 100644 --- a/autograde-service/src/test/java/ch/epfl/autograde/config/KubernetesConfigTest.java +++ b/autograde-service/src/test/java/ch/epfl/autograde/config/KubernetesConfigTest.java @@ -9,18 +9,13 @@ import static org.junit.jupiter.api.Assertions.assertNotNull; final class KubernetesConfigTest { - @Test - void clientShouldNotBeNull() { - assertNotNull(new KubernetesConfig().kubernetesClient()); - } - - @Test + /*@Test void clientShouldBeInjectedWithSpring() { try(var ctx = new AnnotationConfigApplicationContext(KubernetesConfig.class)){ var client = assertDoesNotThrow(() -> ctx.getBean(KubernetesClient.class)); assertNotNull(client); client.close(); } - } + }*/ } diff --git a/docker-compose.yaml b/docker-compose.yaml index c12828b64c907fa1d943f27102fe2824120e6c96..dee033d1f94a1586a35a4c1e6022ff4ea6416548 100644 --- a/docker-compose.yaml +++ b/docker-compose.yaml @@ -1,7 +1,6 @@ -version: "3" services: - db: - container_name: db + moodle-db: + container_name: moodle-db image: mysql:8.0.33 command: --default-authentication-plugin=mysql_native_password environment: @@ -10,44 +9,82 @@ services: MYSQL_USER: moodle MYSQL_PASSWORD: moodle volumes: - - db-data:/var/lib/mysql + - moodle-db-data:/var/lib/mysql ports: - "3305:3306" - autograde-service: - container_name: autograde-service - build: - context: ./autograde-service - dockerfile: Dockerfile - ports: - - "8082:8082" - env_file: - - k8s/deployments/local/config/autograde-service-configuration.env - - k8s/deployments/local/secrets/autograde-secrets.env + networks: + - autograde-network moodle: container_name: moodle - image: moodlehq/moodle-php-apache:8.0 + build: + context: autograde-plugins/assignsubmission_autograde + dockerfile: Dockerfile ports: - "80:80" depends_on: - - db + - moodle-db environment: MOODLE_URL: http://moodle MOODLE_DB_TYPE: mysqli - MOODLE_DB_HOST: db + MOODLE_DB_HOST: moodle-db MOODLE_DB_PORT: 3306 MOODLE_DB_NAME: moodle MOODLE_DB_USER: moodle MOODLE_DB_PASSWORD: moodle volumes: - # Moodle configuration - - ./moodle:/var/www/html - - ./config.php:/var/www/html/config.php - - ./php-config:/docker-entrypoint.d - moodle-data:/var/www/moodledata - # Mount the plugin - - ./moodle-assignsubmission-autograde:/var/www/html/mod/assign/submission/autograde + - ./autograde-plugins/assignsubmission_autograde/src:/var/www/html/mod/assign/submission/autograde + networks: + - autograde-network + kubernetes: + image: rancher/k3s:v1.26.3-k3s1 + command: server --disable=traefik,coredns + privileged: true + environment: + K3S_KUBECONFIG_OUTPUT: /config/kubeconfig + K3S_KUBECONFIG_MODE: 666 + volumes: + - kubernetes:/var/lib/rancher/k3s + - kubernetes-config:/config + ports: + - "6443:6443" # Kubernetes API Server + networks: + - autograde-network + autograde-service: + hostname: api + domainname: autograde.io + container_name: autograde-service + build: + context: ./autograde-service + dockerfile: Dockerfile + depends_on: + - kubernetes + - moodle + ports: + - "8082:8082" + environment: + AUTOGRADE_BASEURL: http://192.168.1.100:8082 # NOTE: We hardcode the ip because DNS resolution fails inside pods (but not the node) + AUTOGRADE_MOODLE_BASEURL: http://moodle:80 + AUTOGRADE_MOODLE_TOKEN: d2d81554afb08a419d38146c8b23f923 + AUTOGRADE_KUBERNETES_CONFIG: "/config/kubeconfig" + AUTOGRADE_JOB_NAMESPACE: default + AUTOGRADE_JOB_IMAGE_PULL-POLICY: IFNOTPRESENT + AUTOGRADE_JOB_TTL: 172800 + AUTOGRADE_MANAGER_IMAGE: autograde/submission-manager:1.2.4 + AUTOGRADE_MANAGER_PULL-POLICY: IFNOTPRESENT + volumes: + - kubernetes-config:/config + networks: + autograde-network: + ipv4_address: 192.168.1.100 volumes: - db-data: - name: db-data + moodle-db-data: moodle-data: - name: moodle-data \ No newline at end of file + kubernetes: + kubernetes-agent: + kubernetes-config: +networks: + autograde-network: + ipam: + config: + - subnet: 192.168.1.0/24 \ No newline at end of file diff --git a/moodle b/moodle deleted file mode 160000 index aea9770cfc7d003a737f4899489d1e3982efe9ac..0000000000000000000000000000000000000000 --- a/moodle +++ /dev/null @@ -1 +0,0 @@ -Subproject commit aea9770cfc7d003a737f4899489d1e3982efe9ac