From 4c6f30bfaa69024c60ba1f773289c975f691b4eb Mon Sep 17 00:00:00 2001 From: Alexander Olofsson <alexander.olofsson@liu.se> Date: Wed, 2 Nov 2022 15:14:43 +0100 Subject: [PATCH] Clean up code and add vTPM keys from configuration --- .gitignore | 3 + .gitlab-ci.yml | 101 ++++++++++++++++++ .rubocop.yml | 13 +++ .travis.yml | 5 - .../vmware_extensions.rb | 13 ++- foreman_vmware_advanced.gemspec | 20 ++-- test/foreman_vmware_advanced_test.rb | 11 -- test/test_helper.rb | 4 - 8 files changed, 133 insertions(+), 37 deletions(-) create mode 100644 .gitlab-ci.yml create mode 100644 .rubocop.yml delete mode 100644 .travis.yml delete mode 100644 test/foreman_vmware_advanced_test.rb delete mode 100644 test/test_helper.rb diff --git a/.gitignore b/.gitignore index 0cb6eeb..272689d 100644 --- a/.gitignore +++ b/.gitignore @@ -1,4 +1,5 @@ /.bundle/ +/vendor/ /.yardoc /Gemfile.lock /_yardoc/ @@ -7,3 +8,5 @@ /pkg/ /spec/reports/ /tmp/ +/public/ +/*.gem diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml new file mode 100644 index 0000000..5346fb6 --- /dev/null +++ b/.gitlab-ci.yml @@ -0,0 +1,101 @@ +--- +variables: + CI_FOREMAN_PLUGIN: foreman_vmware_advanced + # CI_FOREMAN_WEB: true + + POSTGRES_DB: test + POSTGRES_USER: postgres + POSTGRES_PASSWORD: postgres + +services: + - name: postgres:13-alpine + alias: db + +image: ruby:2.7 + +lint: + cache: + paths: + - vendor/ruby + when: always + + script: + - gem install bundler -N + - bundle config set path vendor + - bundle install -j $(nproc) --retry=3 + - bundle exec rubocop app/ lib/ + +test: + parallel: + matrix: + - FOREMAN_VERSION: + # - 2.5-stable + - 3.0-stable + # - 3.1-stable + # - 3.2-stable + # - 3.3-stable + - 3.4-stable + + cache: + key: foreman-$FOREMAN_VERSION + paths: + - vendor/ruby + - node_modules + when: always + + variables: + RAILS_ENV: test + DATABASE_URL: postgresql://$POSTGRES_USER:$POSTGRES_PASSWORD@db/$POSTGRES_DB + DATABASE_CLEANER_ALLOW_REMOTE_DATABASE_URL: "true" + + before_script: + # Set up Ruby build dependencies + - apt-get update -yqq + - apt-get install -yqq build-essential libcurl4-openssl-dev postgresql-client-13 zlib1g-dev libpq-dev + - apt-get install -yqq --no-install-recommends npm + - gem install bundler -N + + # Install foreman + - FOREMAN_DIR="$(dirname "$CI_PROJECT_DIR")/foreman" + - git clone -b "$FOREMAN_VERSION" --depth=1 -- https://github.com/theforeman/foreman "$FOREMAN_DIR" + - cd "$FOREMAN_DIR" + - bundle config set path "$CI_PROJECT_DIR/vendor" + - bundle config set without console development ec2 gce journald libvirt openstack ovirt sqlite vmware + - bundle install -j $(nproc) --retry=3 + + # Configure database + - bundle exec rake db:create + - bundle exec rake db:migrate + + # Install plugin + - "echo \"gem '$CI_FOREMAN_PLUGIN', path: '$CI_PROJECT_DIR'\" > bundler.d/local.rb" + - bundle install -j $(nproc) --retry=3 + - bundle exec rake db:migrate + + - | + if [ -n "$CI_FOREMAN_WEB" ]; then + mkdir -p "$CI_PROJECT_DIR/node_modules" + ln -s "$CI_PROJECT_DIR/node_modules" node_modules + npm install --legacy-peer-deps + bundle exec rake webpack:compile + fi + script: + # Foreman-side tasks + - cd "$FOREMAN_DIR" + - | + if [ -d "$CI_PROJECT_DIR/test" ]; then + bundle exec rake "test:$CI_FOREMAN_PLUGIN" + [ -d 'jenkins/reports' ] && mv jenkins/reports "$CI_PROJECT_DIR" + fi + - '[ -d "$CI_PROJECT_DIR/app/assets" ] && RAILS_ENV=production bundle exec rake "plugin:assets:precompile[$CI_FOREMAN_PLUGIN]"' + + # Plugin-side tasks + - cd "$CI_PROJECT_DIR" + - gem build $CI_FOREMAN_PLUGIN.gemspec + + artifacts: + paths: + - '*.gem' + - 'public' + reports: + junit: reports/unit/*.xml diff --git a/.rubocop.yml b/.rubocop.yml new file mode 100644 index 0000000..a420c76 --- /dev/null +++ b/.rubocop.yml @@ -0,0 +1,13 @@ +--- +AllCops: + NewCops: enable + +Style/Documentation: + Enabled: false + +Metrics/AbcSize: + Enabled: false +Metrics/CyclomaticComplexity: + Enabled: false +Metrics/PerceivedComplexity: + Enabled: false diff --git a/.travis.yml b/.travis.yml deleted file mode 100644 index b1ed4e9..0000000 --- a/.travis.yml +++ /dev/null @@ -1,5 +0,0 @@ -sudo: false -language: ruby -rvm: - - 2.1.9 -before_install: gem install bundler -v 1.13.7 diff --git a/app/models/concerns/foreman_vmware_advanced/vmware_extensions.rb b/app/models/concerns/foreman_vmware_advanced/vmware_extensions.rb index 0e95156..78eb451 100644 --- a/app/models/concerns/foreman_vmware_advanced/vmware_extensions.rb +++ b/app/models/concerns/foreman_vmware_advanced/vmware_extensions.rb @@ -6,15 +6,18 @@ module ForemanVmwareAdvanced args = super(inp_args) args[:extra_config] = (args[:extra_config] || {}).merge( - 'bios.bootOrder'.to_sym => 'ethernet0', - 'svga.autodetect'.to_sym => 'TRUE' + 'bios.bootOrder': 'ethernet0', + 'svga.autodetect': 'TRUE' ) - if args[:guest_id]&.start_with?('win') - args[:extra_config]['disk.EnableUUID'.to_sym] = 'TRUE' - args[:extra_config]['vtpm.present'.to_sym] = 'TRUE' + if SETTINGS[:vtpm_csr] && SETTINGS[:vtpm_crt] + args[:extra_config][:'vtpm.present'] = 'TRUE' + args[:extra_config][:'vtpm.ekCSR'] = SETTINGS[:vtpm_csr] + args[:extra_config][:'vtpm.ekCRT'] = SETTINGS[:vtpm_crt] end + args[:extra_config][:'disk.EnableUUID'] = 'TRUE' if args[:guest_id]&.start_with?('win') + args end end diff --git a/foreman_vmware_advanced.gemspec b/foreman_vmware_advanced.gemspec index 3266c95..354a3c8 100644 --- a/foreman_vmware_advanced.gemspec +++ b/foreman_vmware_advanced.gemspec @@ -1,8 +1,6 @@ -# coding: utf-8 +# frozen_string_literal: true -lib = File.expand_path('../lib', __FILE__) -$LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib) -require 'foreman_vmware_advanced/version' +require_relative 'foreman_vmware_advanced/version' Gem::Specification.new do |spec| spec.name = 'foreman_vmware_advanced' @@ -13,14 +11,12 @@ Gem::Specification.new do |spec| spec.summary = 'Adds advanced values to the VMWare vmx config' spec.description = spec.summary spec.homepage = 'https://github.com/ananace/foreman_vmware_advanced' - spec.license = 'MIT' + spec.license = 'GPL-3.0' - spec.files = `git ls-files -z`.split("\x0").reject do |f| - f.match(%r{^(test|spec|features)/}) - end - spec.require_paths = ['lib'] + spec.files = Dir['{app,lib}/**/*.{rake,rb}'] + %w[LICENSE.txt Rakefile README.md] - spec.add_development_dependency 'bundler', '~> 1.13' - spec.add_development_dependency 'minitest', '~> 5.0' - spec.add_development_dependency 'rake', '~> 10.0' + spec.add_development_dependency 'rubocop' + spec.add_development_dependency 'rubocop-minitest' + spec.add_development_dependency 'rubocop-performance' + spec.add_development_dependency 'rubocop-rails' end diff --git a/test/foreman_vmware_advanced_test.rb b/test/foreman_vmware_advanced_test.rb deleted file mode 100644 index 83fde9f..0000000 --- a/test/foreman_vmware_advanced_test.rb +++ /dev/null @@ -1,11 +0,0 @@ -require 'test_helper' - -class ForemanVmwareAdvancedTest < Minitest::Test - def test_that_it_has_a_version_number - refute_nil ::ForemanVmwareAdvanced::VERSION - end - - def test_it_does_something_useful - assert false - end -end diff --git a/test/test_helper.rb b/test/test_helper.rb deleted file mode 100644 index 02729c5..0000000 --- a/test/test_helper.rb +++ /dev/null @@ -1,4 +0,0 @@ -$LOAD_PATH.unshift File.expand_path('../../lib', __FILE__) -require 'foreman_vmware_advanced' - -require 'minitest/autorun' -- GitLab