diff --git a/.github/dependabot.yml b/.github/dependabot.yml index 4ae585a..c8f8016 100644 --- a/.github/dependabot.yml +++ b/.github/dependabot.yml @@ -3,11 +3,6 @@ updates: - package-ecosystem: bundler directory: "/" schedule: - interval: weekly - open-pull-requests-limit: 10 - -- package-ecosystem: github-actions - directory: "/" - schedule: - interval: weekly + interval: daily + time: "13:00" open-pull-requests-limit: 10 diff --git a/.github/workflows/auto_release_prep.yml b/.github/workflows/auto_release_prep.yml deleted file mode 100644 index 50d172f..0000000 --- a/.github/workflows/auto_release_prep.yml +++ /dev/null @@ -1,12 +0,0 @@ -name: Automated release prep - -on: - workflow_dispatch: - -jobs: - auto_release_prep: - uses: puppetlabs/release-engineering-repo-standards/.github/workflows/auto_release_prep.yml@v1 - secrets: inherit - with: - project-type: ruby - version-file-path: lib/vmpooler-provider-vsphere/version.rb diff --git a/.github/workflows/dependabot_merge.yml b/.github/workflows/dependabot_merge.yml deleted file mode 100644 index 75b9cea..0000000 --- a/.github/workflows/dependabot_merge.yml +++ /dev/null @@ -1,8 +0,0 @@ -name: Dependabot auto-merge - -on: pull_request - -jobs: - dependabot_merge: - uses: puppetlabs/release-engineering-repo-standards/.github/workflows/dependabot_merge.yml@v1 - secrets: inherit diff --git a/.github/workflows/ensure_label.yml b/.github/workflows/ensure_label.yml deleted file mode 100644 index 50a5fa8..0000000 --- a/.github/workflows/ensure_label.yml +++ /dev/null @@ -1,8 +0,0 @@ -name: Ensure label - -on: pull_request - -jobs: - ensure_label: - uses: puppetlabs/release-engineering-repo-standards/.github/workflows/ensure_label.yml@v1 - secrets: inherit diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml deleted file mode 100644 index 1ba42e5..0000000 --- a/.github/workflows/release.yml +++ /dev/null @@ -1,89 +0,0 @@ -name: Release Gem - -on: workflow_dispatch - -jobs: - release: - runs-on: ubuntu-latest - if: github.repository == 'puppetlabs/vmpooler-provider-vsphere' - steps: - - uses: actions/checkout@v4 - - - name: Get Current Version - uses: actions/github-script@v7 - id: cv - with: - script: | - const { data: response } = await github.rest.repos.getLatestRelease({ - owner: context.repo.owner, - repo: context.repo.repo, - }) - console.log(`The latest release is ${response.tag_name}`) - return response.tag_name - result-encoding: string - - - name: Get Next Version - id: nv - run: | - version=$(grep VERSION lib/vmpooler-provider-vsphere/version.rb |rev |cut -d "'" -f2 |rev) - echo "version=$version" >> $GITHUB_OUTPUT - echo "Found version $version from lib/vmpooler-provider-vsphere/version.rb" - - - name: Generate Changelog - uses: docker://githubchangeloggenerator/github-changelog-generator:1.16.2 - with: - args: >- - --future-release ${{ steps.nv.outputs.version }} - env: - CHANGELOG_GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} - - - name: Validate Changelog - run : | - set -e - if [[ -n $(git status --porcelain) ]]; then - echo "Here is the current git status:" - git status - echo - echo "The following changes were detected:" - git --no-pager diff - echo "Uncommitted PRs found in the changelog. Please submit a release prep PR of changes after running `./update-changelog`" - exit 1 - fi - - - name: Generate Release Notes - uses: docker://githubchangeloggenerator/github-changelog-generator:1.16.2 - with: - args: >- - --since-tag ${{ steps.cv.outputs.result }} - --future-release ${{ steps.nv.outputs.version }} - --output release-notes.md - env: - CHANGELOG_GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} - - - name: Tag Release - uses: ncipollo/release-action@v1 - with: - tag: ${{ steps.nv.outputs.version }} - token: ${{ secrets.GITHUB_TOKEN }} - bodyfile: release-notes.md - draft: false - prerelease: false - - # This step should closely match what is used in `docker/Dockerfile` in vmpooler-deployment - - name: Install Ruby jruby-9.3.6.0 - uses: ruby/setup-ruby@v1 - with: - ruby-version: 'jruby-9.4.3.0' - - - name: Build gem - run: gem build *.gemspec - - - name: Publish gem - run: | - mkdir -p $HOME/.gem - touch $HOME/.gem/credentials - chmod 0600 $HOME/.gem/credentials - printf -- "---\n:rubygems_api_key: ${GEM_HOST_API_KEY}\n" > $HOME/.gem/credentials - gem push *.gem - env: - GEM_HOST_API_KEY: '${{ secrets.RUBYGEMS_AUTH_TOKEN }}' diff --git a/.github/workflows/security.yml b/.github/workflows/security.yml deleted file mode 100644 index ba273f5..0000000 --- a/.github/workflows/security.yml +++ /dev/null @@ -1,39 +0,0 @@ -name: Security -on: - workflow_dispatch: - push: - branches: - - main - -jobs: - scan: - name: Mend Scanning - runs-on: ubuntu-latest - steps: - - name: checkout repo content - uses: actions/checkout@v4 - with: - fetch-depth: 1 - - name: setup ruby - uses: ruby/setup-ruby@v1 - with: - ruby-version: 2.7 - # setup a package lock if one doesn't exist, otherwise do nothing - - name: check lock - run: '[ -f "Gemfile.lock" ] && echo "package lock file exists, skipping" || bundle lock' - # install java - - uses: actions/setup-java@v4 - with: - distribution: 'temurin' # See 'Supported distributions' for available options - java-version: '17' - # download mend - - name: download_mend - run: curl -o wss-unified-agent.jar https://unified-agent.s3.amazonaws.com/wss-unified-agent.jar - - name: run mend - run: java -jar wss-unified-agent.jar - env: - WS_APIKEY: ${{ secrets.MEND_API_KEY }} - WS_WSS_URL: https://saas-eu.whitesourcesoftware.com/agent - WS_USERKEY: ${{ secrets.MEND_TOKEN }} - WS_PRODUCTNAME: RE - WS_PROJECTNAME: ${{ github.event.repository.name }} diff --git a/.github/workflows/testing.yml b/.github/workflows/testing.yml index 1f2f421..501403f 100644 --- a/.github/workflows/testing.yml +++ b/.github/workflows/testing.yml @@ -18,9 +18,9 @@ jobs: strategy: matrix: ruby-version: - - 'jruby-9.4.3.0' + - '2.5.8' steps: - - uses: actions/checkout@v4 + - uses: actions/checkout@v2 - name: Set up Ruby uses: ruby/setup-ruby@v1 with: @@ -34,9 +34,10 @@ jobs: strategy: matrix: ruby-version: - - 'jruby-9.4.3.0' + - '2.5.8' + - 'jruby-9.2.12.0' steps: - - uses: actions/checkout@v4 + - uses: actions/checkout@v2 - name: Set up Ruby uses: ruby/setup-ruby@v1 with: diff --git a/.github_changelog_generator b/.github_changelog_generator deleted file mode 100644 index db01582..0000000 --- a/.github_changelog_generator +++ /dev/null @@ -1,3 +0,0 @@ -project=vmpooler-provider-vsphere -user=puppetlabs -exclude_labels=maintenance \ No newline at end of file diff --git a/.rubocop.yml b/.rubocop.yml deleted file mode 100644 index 0f38ae9..0000000 --- a/.rubocop.yml +++ /dev/null @@ -1,98 +0,0 @@ -inherit_from: .rubocop_todo.yml - -AllCops: - Include: - - 'lib/**/*.rb' - Exclude: - - 'scripts/**/*' - - 'spec/**/*' - - 'vendor/**/*' - - Gemfile - - Rakefile - - Vagrantfile - -Style/Documentation: - Enabled: false - -# Line length is not useful -Layout/LineLength: - Enabled: false - -# Empty method definitions over more than one line is ok -Style/EmptyMethod: - Enabled: false - -# Due to legacy codebase -# - Globals are used liberally -Style/GlobalVars: - Enabled: false -# - A lot of complexity -Metrics/AbcSize: - Enabled: false -Metrics/PerceivedComplexity: - Enabled: false -Metrics/CyclomaticComplexity: - Enabled: false -Metrics/BlockNesting: - Enabled: false -# - Long Methods, Classes, Blocks, and Modules -Metrics/MethodLength: - Enabled: false -Metrics/ClassLength: - Enabled: false -Metrics/BlockLength: - Enabled: false -Metrics/ModuleLength: - Enabled: false - -# WordArray is crashing rubocop in lib/vmpooler/api/helpers.rb -Style/WordArray: - Enabled: false - -# RedundantBegin is causing lib/pool_manager & vsphere.rb to fail in Ruby 2.5+ -Style/RedundantBegin: - Enabled: false - -# Either sytnax for regex is ok -Style/RegexpLiteral: - Enabled: false - -# In some cases readability is better without these cops enabled -Style/ConditionalAssignment: - Enabled: false -Style/Next: - Enabled: false -Metrics/ParameterLists: - Max: 10 -Style/GuardClause: - Enabled: false - -# Enforce LF line endings, even when on Windows -Layout/EndOfLine: - EnforcedStyle: lf - -# Added in 0.80, don't really care about the change -Style/HashEachMethods: - Enabled: false - -# Added in 0.80, don't really care about the change -Style/HashTransformKeys: - Enabled: false - -# Added in 0.80, don't really care about the change -Style/HashTransformValues: - Enabled: false - -# These short variable names make sense as exceptions to the rule, but generally I think short variable names do hurt readability -Naming/MethodParameterName: - AllowedNames: - - vm - - dc - - s - - x - - f - -# Standard comparisons seem more readable -Style/NumericPredicate: - Enabled: true - EnforcedStyle: comparison diff --git a/.rubocop_todo.yml b/.rubocop_todo.yml deleted file mode 100644 index 6105e46..0000000 --- a/.rubocop_todo.yml +++ /dev/null @@ -1,286 +0,0 @@ -# This configuration was generated by -# `rubocop --auto-gen-config` -# on 2017-07-18 15:25:35 -0700 using RuboCop version 0.49.1. -# The point is for the user to remove these configuration records -# one by one as the offenses are removed from the code base. -# Note that changes in the inspected code, or installation of new -# versions of RuboCop, may require this file to be generated again. - -# Offense count: 1 -# Cop supports --auto-correct. -# Configuration parameters: EnforcedStyle, SupportedStyles, IndentationWidth. -# SupportedStyles: with_first_parameter, with_fixed_indentation -Layout/ParameterAlignment: - Exclude: - - 'lib/vmpooler/api/v1.rb' - -# Offense count: 9 -# Cop supports --auto-correct. -# Configuration parameters: EnforcedStyle, SupportedStyles, IndentOneStep, IndentationWidth. -# SupportedStyles: case, end -Layout/CaseIndentation: - Exclude: - - 'lib/vmpooler/api/helpers.rb' - - 'lib/vmpooler/api/v1.rb' - -# Offense count: 1 -# Cop supports --auto-correct. -Layout/ClosingParenthesisIndentation: - Exclude: - - 'lib/vmpooler/api/v1.rb' - -# Offense count: 1 -# Cop supports --auto-correct. -Layout/EmptyLines: - Exclude: - - 'lib/vmpooler/api/dashboard.rb' - -# Offense count: 1 -# Cop supports --auto-correct. -# Configuration parameters: EnforcedStyle, SupportedStyles. -# SupportedStyles: empty_lines, empty_lines_except_namespace, empty_lines_special, no_empty_lines -Layout/EmptyLinesAroundClassBody: - Exclude: - - 'lib/vmpooler/api/helpers.rb' - -# Offense count: 3 -# Cop supports --auto-correct. -# Configuration parameters: EnforcedStyle, SupportedStyles. -# SupportedStyles: empty_lines, empty_lines_except_namespace, empty_lines_special, no_empty_lines -Layout/EmptyLinesAroundModuleBody: - Exclude: - - 'lib/vmpooler/api/helpers.rb' - -# Offense count: 7 -# Cop supports --auto-correct. -# Configuration parameters: EnforcedStyle, SupportedStyles, IndentationWidth. -# SupportedStyles: special_inside_parentheses, consistent, align_braces -Layout/FirstHashElementIndentation: - Exclude: - - 'lib/vmpooler/api/helpers.rb' - - 'lib/vmpooler/api/v1.rb' - -# Offense count: 1 -# Cop supports --auto-correct. -# Configuration parameters: Width, IgnoredPatterns. -Layout/IndentationWidth: - Exclude: - - 'lib/vmpooler/api/v1.rb' - -# Offense count: 1 -# Cop supports --auto-correct. -# Configuration parameters: EnforcedStyle, SupportedStyles. -# SupportedStyles: symmetrical, new_line, same_line -Layout/MultilineMethodCallBraceLayout: - Exclude: - - 'lib/vmpooler/api/v1.rb' - -# Offense count: 1 -# Cop supports --auto-correct. -# Configuration parameters: EnforcedStyle, SupportedStyles. -# SupportedStyles: space, no_space -Layout/SpaceAroundEqualsInParameterDefault: - Exclude: - - 'lib/vmpooler/api/helpers.rb' - -# Offense count: 1 -# Cop supports --auto-correct. -Layout/SpaceAroundKeyword: - Exclude: - - 'lib/vmpooler/api/v1.rb' - -# Offense count: 1 -# Cop supports --auto-correct. -# Configuration parameters: AllowForAlignment. -Layout/SpaceAroundOperators: - Exclude: - - 'lib/vmpooler/api/v1.rb' - -# Offense count: 8 -# Cop supports --auto-correct. -# Configuration parameters: EnforcedStyle, SupportedStyles, EnforcedStyleForEmptyBraces, SupportedStylesForEmptyBraces. -# SupportedStyles: space, no_space, compact -# SupportedStylesForEmptyBraces: space, no_space -Layout/SpaceInsideHashLiteralBraces: - Exclude: - - 'lib/vmpooler/api/helpers.rb' - -# Offense count: 1 -# Cop supports --auto-correct. -Layout/SpaceInsideParens: - Exclude: - - 'lib/vmpooler/api/v1.rb' - -# Offense count: 2 -# Configuration parameters: AllowSafeAssignment. -Lint/AssignmentInCondition: - Exclude: - - 'lib/vmpooler/api/helpers.rb' - - 'lib/vmpooler/api/v1.rb' - -# Offense count: 2 -Lint/SuppressedException: - Exclude: - - 'lib/vmpooler/api/dashboard.rb' - -# Offense count: 1 -Lint/ShadowingOuterLocalVariable: - Exclude: - - 'lib/vmpooler/api/helpers.rb' - -# Offense count: 1 -# Cop supports --auto-correct. -# Configuration parameters: AllowUnusedKeywordArguments, IgnoreEmptyMethods. -Lint/UnusedMethodArgument: - Exclude: - - 'lib/vmpooler/api/helpers.rb' - -# Offense count: 6 -Lint/UselessAssignment: - Exclude: - - 'lib/vmpooler/api/dashboard.rb' - - 'lib/vmpooler/api/helpers.rb' - -# Offense count: 6 -# Cop supports --auto-correct. -# Configuration parameters: EnforcedStyle, SupportedStyles. -# SupportedStyles: always, conditionals -Style/AndOr: - Exclude: - - 'lib/vmpooler/api/helpers.rb' - - 'lib/vmpooler/api/v1.rb' - -# Offense count: 1 -Style/CaseEquality: - Exclude: - - 'lib/vmpooler/api/helpers.rb' - -# Offense count: 1 -# Configuration parameters: EnforcedStyle, SupportedStyles. -# SupportedStyles: for, each -Style/For: - Exclude: - - 'lib/vmpooler/api/dashboard.rb' - -# Offense count: 24 -# Cop supports --auto-correct. -# Configuration parameters: EnforcedStyle, SupportedStyles, UseHashRocketsWithSymbolValues, PreferHashRocketsForNonAlnumEndingSymbols. -# SupportedStyles: ruby19, hash_rockets, no_mixed_keys, ruby19_no_mixed_keys -Style/HashSyntax: - Exclude: - - 'lib/vmpooler/api/helpers.rb' - - 'lib/vmpooler/api/v1.rb' - -# Offense count: 4 -# Cop supports --auto-correct. -# Configuration parameters: MaxLineLength. -Style/IfUnlessModifier: - Exclude: - - 'lib/vmpooler/api/helpers.rb' - - 'lib/vmpooler/api/v1.rb' - -# Offense count: 3 -# Cop supports --auto-correct. -# Configuration parameters: EnforcedStyle, SupportedStyles. -# SupportedStyles: both, prefix, postfix -Style/NegatedIf: - Exclude: - - 'lib/vmpooler/api/v1.rb' - -# Offense count: 3 -# Cop supports --auto-correct. -Style/Not: - Exclude: - - 'lib/vmpooler/api/v1.rb' - -# Offense count: 1 -# Cop supports --auto-correct. -# Configuration parameters: AutoCorrect, EnforcedStyle, SupportedStyles. -# SupportedStyles: predicate, comparison -Style/NumericPredicate: - Exclude: - - 'spec/**/*' - - 'lib/vmpooler/api/v1.rb' - -# Offense count: 2 -# Cop supports --auto-correct. -Style/ParallelAssignment: - Exclude: - - 'lib/vmpooler/api/v1.rb' - -# Offense count: 1 -# Cop supports --auto-correct. -# Configuration parameters: AllowSafeAssignment. -Style/ParenthesesAroundCondition: - Exclude: - - 'lib/vmpooler/api/v1.rb' - -# Offense count: 2 -# Cop supports --auto-correct. -Style/PerlBackrefs: - Exclude: - - 'lib/vmpooler/api/v1.rb' - -# Offense count: 1 -# Configuration parameters: NamePrefix, NamePrefixBlacklist, NameWhitelist. -# NamePrefix: is_, has_, have_ -# NamePrefixBlacklist: is_, has_, have_ -# NameWhitelist: is_a? -Naming/PredicateName: - Exclude: - - 'spec/**/*' - - 'lib/vmpooler/api/helpers.rb' - -# Offense count: 1 -# Cop supports --auto-correct. -Style/RedundantParentheses: - Exclude: - - 'lib/vmpooler/api/v1.rb' - -# Offense count: 2 -# Cop supports --auto-correct. -# Configuration parameters: AllowMultipleReturnValues. -Style/RedundantReturn: - Exclude: - - 'lib/vmpooler/api/helpers.rb' - -# Offense count: 5 -# Cop supports --auto-correct. -Style/RedundantSelf: - Exclude: - - 'lib/vmpooler/api.rb' - -# Offense count: 1 -# Cop supports --auto-correct. -# Configuration parameters: EnforcedStyle, SupportedStyles, ConsistentQuotesInMultiline. -# SupportedStyles: single_quotes, double_quotes -Style/StringLiterals: - Exclude: - - 'lib/vmpooler/api/v1.rb' - -# Offense count: 1 -# Cop supports --auto-correct. -# Configuration parameters: EnforcedStyle, SupportedStyles, AllowSafeAssignment. -# SupportedStyles: require_parentheses, require_no_parentheses, require_parentheses_when_complex -Style/TernaryParentheses: - Exclude: - - 'lib/vmpooler/api/helpers.rb' - -# Offense count: 2 -# Configuration parameters: EnforcedStyle, SupportedStyles. -# SupportedStyles: snake_case, camelCase -Naming/VariableName: - Exclude: - - 'lib/vmpooler/api/v1.rb' - -# Offense count: 1 -# Cop supports --auto-correct. -Style/YodaCondition: - Exclude: - - 'lib/vmpooler/api/helpers.rb' - -# Offense count: 1 -# Cop supports --auto-correct. -Style/ZeroLengthPredicate: - Exclude: - - 'lib/vmpooler/api/helpers.rb' diff --git a/CHANGELOG.md b/CHANGELOG.md deleted file mode 100644 index 8e3ca6b..0000000 --- a/CHANGELOG.md +++ /dev/null @@ -1,136 +0,0 @@ -# Changelog - -## [3.3.4](https://github.com/puppetlabs/vmpooler-provider-vsphere/tree/3.3.4) (2023-08-30) - -[Full Changelog](https://github.com/puppetlabs/vmpooler-provider-vsphere/compare/3.3.3...3.3.4) - -**Fixed bugs:** - -- \(maint\) Convert booleans and Time objects to strings when being added to redis [\#51](https://github.com/puppetlabs/vmpooler-provider-vsphere/pull/51) ([isaac-hammes](https://github.com/isaac-hammes)) - -## [3.3.3](https://github.com/puppetlabs/vmpooler-provider-vsphere/tree/3.3.3) (2023-08-28) - -[Full Changelog](https://github.com/puppetlabs/vmpooler-provider-vsphere/compare/3.3.2...3.3.3) - -**Fixed bugs:** - -- \(maint\) Update Gemfile.lock and use block for transaction. [\#49](https://github.com/puppetlabs/vmpooler-provider-vsphere/pull/49) ([isaac-hammes](https://github.com/isaac-hammes)) - -## [3.3.2](https://github.com/puppetlabs/vmpooler-provider-vsphere/tree/3.3.2) (2023-08-23) - -[Full Changelog](https://github.com/puppetlabs/vmpooler-provider-vsphere/compare/3.3.1...3.3.2) - -**Fixed bugs:** - -- \(maint\) Increase timeout for cloned vms to obtain IPs. [\#47](https://github.com/puppetlabs/vmpooler-provider-vsphere/pull/47) ([isaac-hammes](https://github.com/isaac-hammes)) - -## [3.3.1](https://github.com/puppetlabs/vmpooler-provider-vsphere/tree/3.3.1) (2023-08-22) - -[Full Changelog](https://github.com/puppetlabs/vmpooler-provider-vsphere/compare/3.3.0...3.3.1) - -**Fixed bugs:** - -- \(RE-15710\) Fix IP address that is returned and increase timeout [\#44](https://github.com/puppetlabs/vmpooler-provider-vsphere/pull/44) ([yachub](https://github.com/yachub)) - -## [3.3.0](https://github.com/puppetlabs/vmpooler-provider-vsphere/tree/3.3.0) (2023-08-18) - -[Full Changelog](https://github.com/puppetlabs/vmpooler-provider-vsphere/compare/3.2.0...3.3.0) - -**Implemented enhancements:** - -- \(POD-10\) Log reason for failed VM checks. [\#42](https://github.com/puppetlabs/vmpooler-provider-vsphere/pull/42) ([isaac-hammes](https://github.com/isaac-hammes)) - -## [3.2.0](https://github.com/puppetlabs/vmpooler-provider-vsphere/tree/3.2.0) (2023-08-10) - -[Full Changelog](https://github.com/puppetlabs/vmpooler-provider-vsphere/compare/3.1.0...3.2.0) - -**Implemented enhancements:** - -- Bump jruby to 9.4.3.0 and update lockfile [\#40](https://github.com/puppetlabs/vmpooler-provider-vsphere/pull/40) ([yachub](https://github.com/yachub)) - -**Merged pull requests:** - -- Bump thor from 1.2.1 to 1.2.2 [\#38](https://github.com/puppetlabs/vmpooler-provider-vsphere/pull/38) ([dependabot[bot]](https://github.com/apps/dependabot)) -- Bump vmpooler from 3.0.0 to 3.1.0 [\#37](https://github.com/puppetlabs/vmpooler-provider-vsphere/pull/37) ([dependabot[bot]](https://github.com/apps/dependabot)) -- Bump rack-test from 2.0.2 to 2.1.0 [\#36](https://github.com/puppetlabs/vmpooler-provider-vsphere/pull/36) ([dependabot[bot]](https://github.com/apps/dependabot)) - -## [3.1.0](https://github.com/puppetlabs/vmpooler-provider-vsphere/tree/3.1.0) (2023-05-01) - -[Full Changelog](https://github.com/puppetlabs/vmpooler-provider-vsphere/compare/3.0.0...3.1.0) - -**Merged pull requests:** - -- Migrate issue management to Jira [\#34](https://github.com/puppetlabs/vmpooler-provider-vsphere/pull/34) ([yachub](https://github.com/yachub)) -- Bump jruby to 9.4.2.0 [\#33](https://github.com/puppetlabs/vmpooler-provider-vsphere/pull/33) ([yachub](https://github.com/yachub)) - -## [3.0.0](https://github.com/puppetlabs/vmpooler-provider-vsphere/tree/3.0.0) (2023-04-19) - -[Full Changelog](https://github.com/puppetlabs/vmpooler-provider-vsphere/compare/2.1.0...3.0.0) - -**Breaking changes:** - -- \(RE-15124\) Collect VMs IP for use with DNS Plugins [\#29](https://github.com/puppetlabs/vmpooler-provider-vsphere/pull/29) ([yachub](https://github.com/yachub)) - -## [2.1.0](https://github.com/puppetlabs/vmpooler-provider-vsphere/tree/2.1.0) (2023-03-06) - -[Full Changelog](https://github.com/puppetlabs/vmpooler-provider-vsphere/compare/2.0.0...2.1.0) - -**Implemented enhancements:** - -- \(RE-15161\) Use timeout builtin to TCPSocket when opening sockets. [\#30](https://github.com/puppetlabs/vmpooler-provider-vsphere/pull/30) ([isaac-hammes](https://github.com/isaac-hammes)) - -## [2.0.0](https://github.com/puppetlabs/vmpooler-provider-vsphere/tree/2.0.0) (2023-01-30) - -[Full Changelog](https://github.com/puppetlabs/vmpooler-provider-vsphere/compare/1.6.0...2.0.0) - -**Implemented enhancements:** - -- Migrate to rbvmomi2 [\#25](https://github.com/puppetlabs/vmpooler-provider-vsphere/pull/25) ([yachub](https://github.com/yachub)) - -**Closed issues:** - -- Document Custom VM Attribute [\#23](https://github.com/puppetlabs/vmpooler-provider-vsphere/issues/23) - -**Merged pull requests:** - -- Fix workflow deprecations, changelog, and add docs [\#24](https://github.com/puppetlabs/vmpooler-provider-vsphere/pull/24) ([yachub](https://github.com/yachub)) -- \(RE-15111\) Migrate Snyk to Mend Scanning [\#22](https://github.com/puppetlabs/vmpooler-provider-vsphere/pull/22) ([yachub](https://github.com/yachub)) -- \(RE-14811\) Remove DIO as codeowners [\#21](https://github.com/puppetlabs/vmpooler-provider-vsphere/pull/21) ([yachub](https://github.com/yachub)) -- Add Snyk action [\#20](https://github.com/puppetlabs/vmpooler-provider-vsphere/pull/20) ([yachub](https://github.com/yachub)) -- Add release-engineering to codeowners [\#19](https://github.com/puppetlabs/vmpooler-provider-vsphere/pull/19) ([yachub](https://github.com/yachub)) -- Update rubocop requirement from ~\> 1.1.0 to ~\> 1.28.2 [\#17](https://github.com/puppetlabs/vmpooler-provider-vsphere/pull/17) ([dependabot[bot]](https://github.com/apps/dependabot)) - -## [1.6.0](https://github.com/puppetlabs/vmpooler-provider-vsphere/tree/1.6.0) (2022-07-25) - -[Full Changelog](https://github.com/puppetlabs/vmpooler-provider-vsphere/compare/1.5.0...1.6.0) - -**Merged pull requests:** - -- pin to vmpooler 2.4 [\#18](https://github.com/puppetlabs/vmpooler-provider-vsphere/pull/18) ([sbeaulie](https://github.com/sbeaulie)) - -## [1.5.0](https://github.com/puppetlabs/vmpooler-provider-vsphere/tree/1.5.0) (2021-12-13) - -[Full Changelog](https://github.com/puppetlabs/vmpooler-provider-vsphere/compare/1.4.0...1.5.0) - -**Merged pull requests:** - -- Bump version to 1.5.0, require vmpooler \>= 2.1 [\#5](https://github.com/puppetlabs/vmpooler-provider-vsphere/pull/5) ([genebean](https://github.com/genebean)) -- Move vsphere specific methods out of vmpooler [\#4](https://github.com/puppetlabs/vmpooler-provider-vsphere/pull/4) ([sbeaulie](https://github.com/sbeaulie)) - -## [1.4.0](https://github.com/puppetlabs/vmpooler-provider-vsphere/tree/1.4.0) (2021-12-08) - -[Full Changelog](https://github.com/puppetlabs/vmpooler-provider-vsphere/compare/1.3.0...1.4.0) - -**Merged pull requests:** - -- Prep for initial standalone release: v1.4.0 [\#3](https://github.com/puppetlabs/vmpooler-provider-vsphere/pull/3) ([genebean](https://github.com/genebean)) -- Add GH Action for releasing gems [\#2](https://github.com/puppetlabs/vmpooler-provider-vsphere/pull/2) ([genebean](https://github.com/genebean)) -- Fix naming, add docs, add missing test file [\#1](https://github.com/puppetlabs/vmpooler-provider-vsphere/pull/1) ([genebean](https://github.com/genebean)) - -## [1.3.0](https://github.com/puppetlabs/vmpooler-provider-vsphere/tree/1.3.0) (2021-11-29) - -[Full Changelog](https://github.com/puppetlabs/vmpooler-provider-vsphere/compare/a08cba099f867b1db01a50940ec3ae9239245db5...1.3.0) - - - -\* *This Changelog was automatically generated by [github_changelog_generator](https://github.com/github-changelog-generator/github-changelog-generator)* diff --git a/CODEOWNERS b/CODEOWNERS index b47017c..9c4ecfc 100644 --- a/CODEOWNERS +++ b/CODEOWNERS @@ -1,10 +1,10 @@ -# This will cause RE to be assigned review of any opened PRs against +# This will cause DIO to be assigned review of any opened PRs against # the branches containing this file. # See https://help.github.com/en/articles/about-code-owners for info on how to # take ownership of parts of the code base that should be reviewed by another # team. -# RE will be the default owners for everything in the repo. -* @puppetlabs/release-engineering +# DIO will be the default owners for everything in the repo. +* @puppetlabs/dio diff --git a/Gemfile.lock b/Gemfile.lock index 6d96901..83f626e 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -1,190 +1,170 @@ PATH remote: . specs: - vmpooler-provider-vsphere (3.3.4) - rbvmomi2 (>= 3.1, < 4.0) - vmpooler (~> 3.0) + vmpooler-vsphere-provider (1.3.0) + rbvmomi (>= 2.1, < 4.0) GEM remote: https://rubygems.org/ specs: ast (2.4.2) - bindata (2.4.15) + bindata (2.4.10) builder (3.2.4) - climate_control (1.2.0) + climate_control (1.0.1) coderay (1.1.3) - concurrent-ruby (1.2.2) - connection_pool (2.4.1) - deep_merge (1.2.2) - diff-lcs (1.5.0) + concurrent-ruby (1.1.9) + connection_pool (2.2.5) + diff-lcs (1.4.4) docile (1.4.0) - faraday (2.7.10) - faraday-net_http (>= 2.0, < 3.1) + faraday (1.8.0) + faraday-em_http (~> 1.0) + faraday-em_synchrony (~> 1.0) + faraday-excon (~> 1.1) + faraday-httpclient (~> 1.0.1) + faraday-net_http (~> 1.0) + faraday-net_http_persistent (~> 1.1) + faraday-patron (~> 1.0) + faraday-rack (~> 1.0) + multipart-post (>= 1.2, < 3) ruby2_keywords (>= 0.0.4) - faraday-net_http (3.0.2) - ffi (1.15.5-java) - google-cloud-env (1.6.0) - faraday (>= 0.17.3, < 3.0) - json (2.6.3) - json (2.6.3-java) + faraday-em_http (1.0.0) + faraday-em_synchrony (1.0.0) + faraday-excon (1.1.0) + faraday-httpclient (1.0.1) + faraday-net_http (1.0.1) + faraday-net_http_persistent (1.2.0) + faraday-patron (1.0.0) + faraday-rack (1.0.0) + google-cloud-env (1.5.0) + faraday (>= 0.17.3, < 2.0) + json (2.6.1) method_source (1.0.0) - mock_redis (0.37.0) - mustermann (3.0.0) + mock_redis (0.29.0) + ruby2_keywords + multipart-post (2.1.1) + mustermann (1.1.1) ruby2_keywords (~> 0.0.1) - net-ldap (0.18.0) - nio4r (2.5.9) - nio4r (2.5.9-java) - nokogiri (1.15.4-java) + net-ldap (0.17.0) + nio4r (2.5.8) + nokogiri (1.12.5-x86_64-linux) racc (~> 1.4) - nokogiri (1.15.4-x86_64-linux) - racc (~> 1.4) - opentelemetry-api (1.2.2) - opentelemetry-common (0.20.0) - opentelemetry-api (~> 1.0) - opentelemetry-exporter-jaeger (0.23.0) - opentelemetry-api (~> 1.1) - opentelemetry-common (~> 0.20) - opentelemetry-sdk (~> 1.2) - opentelemetry-semantic_conventions + opentelemetry-api (0.17.0) + opentelemetry-common (0.17.0) + opentelemetry-api (~> 0.17.0) + opentelemetry-exporter-jaeger (0.17.0) + opentelemetry-api (~> 0.17.0) + opentelemetry-common (~> 0.17.0) + opentelemetry-sdk (~> 0.17.0) thrift - opentelemetry-instrumentation-base (0.22.2) - opentelemetry-api (~> 1.0) - opentelemetry-registry (~> 0.1) - opentelemetry-instrumentation-concurrent_ruby (0.21.1) - opentelemetry-api (~> 1.0) - opentelemetry-instrumentation-base (~> 0.22.1) - opentelemetry-instrumentation-http_client (0.22.2) - opentelemetry-api (~> 1.0) - opentelemetry-common (~> 0.20.0) - opentelemetry-instrumentation-base (~> 0.22.1) - opentelemetry-instrumentation-rack (0.23.4) - opentelemetry-api (~> 1.0) - opentelemetry-common (~> 0.20.0) - opentelemetry-instrumentation-base (~> 0.22.1) - opentelemetry-instrumentation-redis (0.25.3) - opentelemetry-api (~> 1.0) - opentelemetry-common (~> 0.20.0) - opentelemetry-instrumentation-base (~> 0.22.1) - opentelemetry-instrumentation-sinatra (0.23.2) - opentelemetry-api (~> 1.0) - opentelemetry-common (~> 0.20.0) - opentelemetry-instrumentation-base (~> 0.22.1) - opentelemetry-instrumentation-rack (~> 0.21) - opentelemetry-registry (0.3.0) - opentelemetry-api (~> 1.1) - opentelemetry-resource_detectors (0.24.1) + opentelemetry-instrumentation-base (0.17.0) + opentelemetry-api (~> 0.17.0) + opentelemetry-instrumentation-concurrent_ruby (0.17.0) + opentelemetry-api (~> 0.17.0) + opentelemetry-instrumentation-base (~> 0.17.0) + opentelemetry-instrumentation-redis (0.17.0) + opentelemetry-api (~> 0.17.0) + opentelemetry-common (~> 0.17.0) + opentelemetry-instrumentation-base (~> 0.17.0) + opentelemetry-instrumentation-sinatra (0.17.0) + opentelemetry-api (~> 0.17.0) + opentelemetry-instrumentation-base (~> 0.17.0) + opentelemetry-resource_detectors (0.17.0) google-cloud-env - opentelemetry-sdk (~> 1.0) - opentelemetry-sdk (1.3.0) - opentelemetry-api (~> 1.1) - opentelemetry-common (~> 0.20) - opentelemetry-registry (~> 0.2) - opentelemetry-semantic_conventions - opentelemetry-semantic_conventions (1.10.0) - opentelemetry-api (~> 1.0) - optimist (3.1.0) - parallel (1.23.0) - parser (3.2.2.3) + opentelemetry-sdk + opentelemetry-sdk (0.17.0) + opentelemetry-api (~> 0.17.0) + opentelemetry-common (~> 0.17.0) + opentelemetry-instrumentation-base (~> 0.17.0) + optimist (3.0.1) + parallel (1.21.0) + parser (3.0.3.1) ast (~> 2.4.1) - racc pickup (0.0.11) - prometheus-client (4.2.1) - pry (0.14.2) + prometheus-client (2.1.0) + pry (0.14.1) coderay (~> 1.1) method_source (~> 1.0) - pry (0.14.2-java) - coderay (~> 1.1) - method_source (~> 1.0) - spoon (~> 0.0) - puma (6.3.1) + puma (5.5.2) nio4r (~> 2.0) - puma (6.3.1-java) - nio4r (~> 2.0) - racc (1.7.1) - racc (1.7.1-java) - rack (2.2.8) - rack-protection (3.1.0) - rack (~> 2.2, >= 2.2.4) - rack-test (2.1.0) - rack (>= 1.3) - rainbow (3.1.1) + racc (1.6.0) + rack (2.2.3) + rack-protection (2.1.0) + rack + rack-test (1.1.0) + rack (>= 1.0, < 3) + rainbow (3.0.0) rake (13.0.6) - rbvmomi2 (3.6.1) + rbvmomi (3.0.0) builder (~> 3.2) json (~> 2.3) - nokogiri (~> 1.12, >= 1.12.5) + nokogiri (~> 1.10) optimist (~> 3.0) - redis (5.0.7) - redis-client (>= 0.9.0) - redis-client (0.16.0) - connection_pool - regexp_parser (2.8.1) - rexml (3.2.6) - rspec (3.12.0) - rspec-core (~> 3.12.0) - rspec-expectations (~> 3.12.0) - rspec-mocks (~> 3.12.0) - rspec-core (3.12.2) - rspec-support (~> 3.12.0) - rspec-expectations (3.12.3) + redis (4.5.1) + regexp_parser (2.1.1) + rexml (3.2.5) + rspec (3.10.0) + rspec-core (~> 3.10.0) + rspec-expectations (~> 3.10.0) + rspec-mocks (~> 3.10.0) + rspec-core (3.10.1) + rspec-support (~> 3.10.0) + rspec-expectations (3.10.1) diff-lcs (>= 1.2.0, < 2.0) - rspec-support (~> 3.12.0) - rspec-mocks (3.12.6) + rspec-support (~> 3.10.0) + rspec-mocks (3.10.2) diff-lcs (>= 1.2.0, < 2.0) - rspec-support (~> 3.12.0) - rspec-support (3.12.1) - rubocop (1.28.2) + rspec-support (~> 3.10.0) + rspec-support (3.10.3) + rubocop (1.1.0) parallel (~> 1.10) - parser (>= 3.1.0.0) + parser (>= 2.7.1.5) rainbow (>= 2.2.2, < 4.0) - regexp_parser (>= 1.8, < 3.0) + regexp_parser (>= 1.8) rexml - rubocop-ast (>= 1.17.0, < 2.0) + rubocop-ast (>= 1.0.1) ruby-progressbar (~> 1.7) - unicode-display_width (>= 1.4.0, < 3.0) - rubocop-ast (1.29.0) - parser (>= 3.2.1.0) - ruby-progressbar (1.13.0) + unicode-display_width (>= 1.4.0, < 2.0) + rubocop-ast (1.13.0) + parser (>= 3.0.1.1) + ruby-progressbar (1.11.0) ruby2_keywords (0.0.5) - simplecov (0.22.0) + simplecov (0.21.2) docile (~> 1.1) simplecov-html (~> 0.11) simplecov_json_formatter (~> 0.1) simplecov-html (0.12.3) - simplecov_json_formatter (0.1.4) - sinatra (3.1.0) - mustermann (~> 3.0) - rack (~> 2.2, >= 2.2.4) - rack-protection (= 3.1.0) + simplecov_json_formatter (0.1.3) + sinatra (2.1.0) + mustermann (~> 1.0) + rack (~> 2.2) + rack-protection (= 2.1.0) tilt (~> 2.0) - spicy-proton (2.1.15) + spicy-proton (2.1.13) bindata (~> 2.3) - spoon (0.0.6) - ffi statsd-ruby (1.5.0) - thor (1.2.2) - thrift (0.18.1) - tilt (2.2.0) - unicode-display_width (2.4.2) - vmpooler (3.5.1) + thor (1.1.0) + thrift (0.15.0) + tilt (2.0.10) + unicode-display_width (1.8.0) + vmpooler (1.3.0) concurrent-ruby (~> 1.1) - connection_pool (~> 2.4) - deep_merge (~> 1.2) + connection_pool (~> 2.2) net-ldap (~> 0.16) - opentelemetry-exporter-jaeger (= 0.23.0) - opentelemetry-instrumentation-concurrent_ruby (= 0.21.1) - opentelemetry-instrumentation-http_client (= 0.22.2) - opentelemetry-instrumentation-redis (= 0.25.3) - opentelemetry-instrumentation-sinatra (= 0.23.2) - opentelemetry-resource_detectors (= 0.24.1) - opentelemetry-sdk (~> 1.3, >= 1.3.0) + nokogiri (~> 1.10) + opentelemetry-exporter-jaeger (= 0.17.0) + opentelemetry-instrumentation-concurrent_ruby (= 0.17.0) + opentelemetry-instrumentation-redis (= 0.17.0) + opentelemetry-instrumentation-sinatra (= 0.17.0) + opentelemetry-resource_detectors (= 0.17.0) + opentelemetry-sdk (= 0.17.0) pickup (~> 0.0.11) - prometheus-client (>= 2, < 5) - puma (>= 5.0.4, < 7) - rack (>= 2.2, < 4.0) + prometheus-client (~> 2.0) + puma (~> 5.0, >= 5.0.4) + rack (~> 2.2) rake (~> 13.0) - redis (~> 5.0) - sinatra (>= 2, < 4) + rbvmomi (>= 2.1, < 4.0) + redis (~> 4.1) + sinatra (~> 2.0) spicy-proton (~> 2.1) statsd-ruby (~> 1.4) yarjuf (2.0.0) @@ -192,7 +172,6 @@ GEM rspec (~> 3) PLATFORMS - universal-java-11 x86_64-linux DEPENDENCIES @@ -201,11 +180,12 @@ DEPENDENCIES pry rack-test (>= 0.6) rspec (>= 3.2) - rubocop (~> 1.28.2) + rubocop (~> 1.1.0) simplecov (>= 0.11.2) thor (~> 1.0, >= 1.0.1) - vmpooler-provider-vsphere! + vmpooler (~> 1.3, >= 1.3.0) + vmpooler-vsphere-provider! yarjuf (>= 2.0) BUNDLED WITH - 2.4.10 + 2.2.22 diff --git a/LICENSE b/LICENSE deleted file mode 100644 index 261eeb9..0000000 --- a/LICENSE +++ /dev/null @@ -1,201 +0,0 @@ - Apache License - Version 2.0, January 2004 - http://www.apache.org/licenses/ - - TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION - - 1. Definitions. - - "License" shall mean the terms and conditions for use, reproduction, - and distribution as defined by Sections 1 through 9 of this document. - - "Licensor" shall mean the copyright owner or entity authorized by - the copyright owner that is granting the License. - - "Legal Entity" shall mean the union of the acting entity and all - other entities that control, are controlled by, or are under common - control with that entity. For the purposes of this definition, - "control" means (i) the power, direct or indirect, to cause the - direction or management of such entity, whether by contract or - otherwise, or (ii) ownership of fifty percent (50%) or more of the - outstanding shares, or (iii) beneficial ownership of such entity. - - "You" (or "Your") shall mean an individual or Legal Entity - exercising permissions granted by this License. - - "Source" form shall mean the preferred form for making modifications, - including but not limited to software source code, documentation - source, and configuration files. - - "Object" form shall mean any form resulting from mechanical - transformation or translation of a Source form, including but - not limited to compiled object code, generated documentation, - and conversions to other media types. - - "Work" shall mean the work of authorship, whether in Source or - Object form, made available under the License, as indicated by a - copyright notice that is included in or attached to the work - (an example is provided in the Appendix below). - - "Derivative Works" shall mean any work, whether in Source or Object - form, that is based on (or derived from) the Work and for which the - editorial revisions, annotations, elaborations, or other modifications - represent, as a whole, an original work of authorship. For the purposes - of this License, Derivative Works shall not include works that remain - separable from, or merely link (or bind by name) to the interfaces of, - the Work and Derivative Works thereof. - - "Contribution" shall mean any work of authorship, including - the original version of the Work and any modifications or additions - to that Work or Derivative Works thereof, that is intentionally - submitted to Licensor for inclusion in the Work by the copyright owner - or by an individual or Legal Entity authorized to submit on behalf of - the copyright owner. For the purposes of this definition, "submitted" - means any form of electronic, verbal, or written communication sent - to the Licensor or its representatives, including but not limited to - communication on electronic mailing lists, source code control systems, - and issue tracking systems that are managed by, or on behalf of, the - Licensor for the purpose of discussing and improving the Work, but - excluding communication that is conspicuously marked or otherwise - designated in writing by the copyright owner as "Not a Contribution." - - "Contributor" shall mean Licensor and any individual or Legal Entity - on behalf of whom a Contribution has been received by Licensor and - subsequently incorporated within the Work. - - 2. Grant of Copyright License. Subject to the terms and conditions of - this License, each Contributor hereby grants to You a perpetual, - worldwide, non-exclusive, no-charge, royalty-free, irrevocable - copyright license to reproduce, prepare Derivative Works of, - publicly display, publicly perform, sublicense, and distribute the - Work and such Derivative Works in Source or Object form. - - 3. Grant of Patent License. Subject to the terms and conditions of - this License, each Contributor hereby grants to You a perpetual, - worldwide, non-exclusive, no-charge, royalty-free, irrevocable - (except as stated in this section) patent license to make, have made, - use, offer to sell, sell, import, and otherwise transfer the Work, - where such license applies only to those patent claims licensable - by such Contributor that are necessarily infringed by their - Contribution(s) alone or by combination of their Contribution(s) - with the Work to which such Contribution(s) was submitted. If You - institute patent litigation against any entity (including a - cross-claim or counterclaim in a lawsuit) alleging that the Work - or a Contribution incorporated within the Work constitutes direct - or contributory patent infringement, then any patent licenses - granted to You under this License for that Work shall terminate - as of the date such litigation is filed. - - 4. Redistribution. You may reproduce and distribute copies of the - Work or Derivative Works thereof in any medium, with or without - modifications, and in Source or Object form, provided that You - meet the following conditions: - - (a) You must give any other recipients of the Work or - Derivative Works a copy of this License; and - - (b) You must cause any modified files to carry prominent notices - stating that You changed the files; and - - (c) You must retain, in the Source form of any Derivative Works - that You distribute, all copyright, patent, trademark, and - attribution notices from the Source form of the Work, - excluding those notices that do not pertain to any part of - the Derivative Works; and - - (d) If the Work includes a "NOTICE" text file as part of its - distribution, then any Derivative Works that You distribute must - include a readable copy of the attribution notices contained - within such NOTICE file, excluding those notices that do not - pertain to any part of the Derivative Works, in at least one - of the following places: within a NOTICE text file distributed - as part of the Derivative Works; within the Source form or - documentation, if provided along with the Derivative Works; or, - within a display generated by the Derivative Works, if and - wherever such third-party notices normally appear. The contents - of the NOTICE file are for informational purposes only and - do not modify the License. You may add Your own attribution - notices within Derivative Works that You distribute, alongside - or as an addendum to the NOTICE text from the Work, provided - that such additional attribution notices cannot be construed - as modifying the License. - - You may add Your own copyright statement to Your modifications and - may provide additional or different license terms and conditions - for use, reproduction, or distribution of Your modifications, or - for any such Derivative Works as a whole, provided Your use, - reproduction, and distribution of the Work otherwise complies with - the conditions stated in this License. - - 5. Submission of Contributions. Unless You explicitly state otherwise, - any Contribution intentionally submitted for inclusion in the Work - by You to the Licensor shall be under the terms and conditions of - this License, without any additional terms or conditions. - Notwithstanding the above, nothing herein shall supersede or modify - the terms of any separate license agreement you may have executed - with Licensor regarding such Contributions. - - 6. Trademarks. This License does not grant permission to use the trade - names, trademarks, service marks, or product names of the Licensor, - except as required for reasonable and customary use in describing the - origin of the Work and reproducing the content of the NOTICE file. - - 7. Disclaimer of Warranty. Unless required by applicable law or - agreed to in writing, Licensor provides the Work (and each - Contributor provides its Contributions) on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or - implied, including, without limitation, any warranties or conditions - of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A - PARTICULAR PURPOSE. You are solely responsible for determining the - appropriateness of using or redistributing the Work and assume any - risks associated with Your exercise of permissions under this License. - - 8. Limitation of Liability. In no event and under no legal theory, - whether in tort (including negligence), contract, or otherwise, - unless required by applicable law (such as deliberate and grossly - negligent acts) or agreed to in writing, shall any Contributor be - liable to You for damages, including any direct, indirect, special, - incidental, or consequential damages of any character arising as a - result of this License or out of the use or inability to use the - Work (including but not limited to damages for loss of goodwill, - work stoppage, computer failure or malfunction, or any and all - other commercial damages or losses), even if such Contributor - has been advised of the possibility of such damages. - - 9. Accepting Warranty or Additional Liability. While redistributing - the Work or Derivative Works thereof, You may choose to offer, - and charge a fee for, acceptance of support, warranty, indemnity, - or other liability obligations and/or rights consistent with this - License. However, in accepting such obligations, You may act only - on Your own behalf and on Your sole responsibility, not on behalf - of any other Contributor, and only if You agree to indemnify, - defend, and hold each Contributor harmless for any liability - incurred by, or claims asserted against, such Contributor by reason - of your accepting any such warranty or additional liability. - - END OF TERMS AND CONDITIONS - - APPENDIX: How to apply the Apache License to your work. - - To apply the Apache License to your work, attach the following - boilerplate notice, with the fields enclosed by brackets "[]" - replaced with your own identifying information. (Don't include - the brackets!) The text should be enclosed in the appropriate - comment syntax for the file format. We also recommend that a - file or class name and description of purpose be included on the - same "printed page" as the copyright notice for easier - identification within third-party archives. - - Copyright [yyyy] [name of copyright owner] - - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. diff --git a/README.md b/README.md index b269094..8cbda60 100644 --- a/README.md +++ b/README.md @@ -1,44 +1,3 @@ -# vmpooler-provider-vsphere +# vmpooler-vsphere-provider -- [vmpooler-provider-vsphere](#vmpooler-provider-vsphere) - - [Usage](#usage) - - [Custom VM Config Attribute](#custom-vm-config-attribute) - - [Update the Gemfile Lock](#update-the-gemfile-lock) - - [Releasing](#releasing) - - [License](#license) - -This is a provider for [VMPooler](https://github.com/puppetlabs/vmpooler) allows using vSphere as a source of machines. This provider was originally part of the main VMPooler code base but was extracted to be a standalone gem so that development could be done independently of VMPooler itself. - -## Usage - -Include this gem in the same Gemfile that you use to install VMPooler itself and then define one or more pools with the `provider` key set to `vsphere`. VMPooler will take care of the rest. - -Examples of deploying VMPooler with this provider can be found in the [puppetlabs/vmpooler-deployment](https://github.com/puppetlabs/vmpooler-deployment) repository. - -### Custom VM Config Attribute - -This provider sets a custom attribute on the VM called `guestinfo.hostname` to the name of the generated VM, which can be queried from inside the guest OS if VMware Tools is isntalled. For example: - -macOS: `"/Library/Application Support/VMware Tools/vmware-tools-daemon" --cmd "info-get guestinfo.hostname"` -Linux or Windows Guest: `vmtoolsd --cmd "info-get guestinfo.hostname"` - -See the [VMware Tools Administration docs](https://docs.vmware.com/en/VMware-Tools/12.1.0/com.vmware.vsphere.vmwaretools.doc/GUID-D026777B-606D-4442-957A-B953C2049659.html) for more information about querying information from the GuestInfo variable. - -## Update the Gemfile Lock - -To update the `Gemfile.lock` run `./update-gemfile-lock`. - -Verify, and update if needed, that the docker tag in the script and GitHub action workflows matches what is used in the [vmpooler-deployment Dockerfile](https://github.com/puppetlabs/vmpooler-deployment/blob/main/docker/Dockerfile). - -## Releasing - -Follow these steps to publish a new GitHub release, and build and push the gem to . - -1. Bump the "VERSION" in `lib/vmpooler-provider-vsphere/version.rb` appropriately based on changes in `CHANGELOG.md` since the last release. -2. Run `./release-prep` to update `Gemfile.lock` and `CHANGELOG.md`. -3. Commit and push changes to a new branch, then open a pull request against `main` and be sure to add the "maintenance" label. -4. After the pull request is approved and merged, then navigate to Actions --> Release Gem --> run workflow --> Branch: main --> Run workflow. - -## License - -vmpooler-provider-vsphere is distributed under the [Apache License, Version 2.0](http://www.apache.org/licenses/LICENSE-2.0.html). See the [LICENSE](LICENSE) file for more details. +This is a WIP - do not use yet. The goal is to extract the vSphere provider from the main VMPooler codebase. Force pushes to this repo may happen while initial development is happening. diff --git a/install-gemfile-lock b/install-gemfile-lock deleted file mode 100755 index a479b0d..0000000 --- a/install-gemfile-lock +++ /dev/null @@ -1,7 +0,0 @@ -#!/usr/bin/env bash - -# The container tag should closely match what is used in `docker/Dockerfile` in vmpooler-deployment -docker run -it --rm \ - -v $(pwd):/app \ - jruby:9.4.3.0-jdk11 \ - /bin/bash -c 'apt-get update -qq && apt-get install -y --no-install-recommends make git netbase && cd /app && gem install bundler && bundle install --jobs 3; echo "LOCK_FILE_UPDATE_EXIT_CODE=$?"' diff --git a/lib/vmpooler-provider-vsphere/version.rb b/lib/vmpooler-provider-vsphere/version.rb deleted file mode 100644 index 36c56a7..0000000 --- a/lib/vmpooler-provider-vsphere/version.rb +++ /dev/null @@ -1,5 +0,0 @@ -# frozen_string_literal: true - -module VmpoolerProviderVsphere - VERSION = '3.3.4' -end diff --git a/lib/vmpooler-vsphere-provider/version.rb b/lib/vmpooler-vsphere-provider/version.rb new file mode 100644 index 0000000..e9c9fad --- /dev/null +++ b/lib/vmpooler-vsphere-provider/version.rb @@ -0,0 +1,5 @@ +# frozen_string_literal: true + +module VmpoolerVsphereProvider + VERSION = '1.3.0' +end diff --git a/lib/vmpooler/providers/vsphere.rb b/lib/vmpooler/providers/vsphere.rb index efd3c9f..b860743 100644 --- a/lib/vmpooler/providers/vsphere.rb +++ b/lib/vmpooler/providers/vsphere.rb @@ -51,13 +51,8 @@ module Vmpooler 'vsphere' end - def domain(pool_name) - dns_plugin_name = pool_config(pool_name)['dns_plugin'] - dns_config(dns_plugin_name) - end - - def folder_configured?(folder_title, base_folder, configured_folders, allowlist) - return true if allowlist&.include?(folder_title) + def folder_configured?(folder_title, base_folder, configured_folders, whitelist) + return true if whitelist&.include?(folder_title) return false unless configured_folders.keys.include?(folder_title) return false unless configured_folders[folder_title] == base_folder @@ -68,14 +63,14 @@ module Vmpooler try = 0 if try.nil? max_tries = 3 @redis.with_metrics do |redis| - redis.multi do |transaction| - transaction.srem("vmpooler__completed__#{pool}", vm_name) - transaction.hdel("vmpooler__active__#{pool}", vm_name) - transaction.hset("vmpooler__vm__#{vm_name}", 'destroy', Time.now.to_s) + redis.multi + redis.srem("vmpooler__completed__#{pool}", vm_name) + redis.hdel("vmpooler__active__#{pool}", vm_name) + redis.hset("vmpooler__vm__#{vm_name}", 'destroy', Time.now) - # Auto-expire metadata key - transaction.expire("vmpooler__vm__#{vm_name}", (data_ttl * 60 * 60)) - end + # Auto-expire metadata key + redis.expire("vmpooler__vm__#{vm_name}", (data_ttl * 60 * 60)) + redis.exec end start = Time.now @@ -124,30 +119,7 @@ module Vmpooler try >= max_tries ? raise : retry end - # Return a list of pool folders - def pool_folders(provider_name) - folders = {} - $config[:pools].each do |pool| - next unless pool['provider'] == provider_name.to_s - - folder_parts = pool['folder'].split('/') - datacenter = get_target_datacenter_from_config(pool['name']) - folders[folder_parts.pop] = "#{datacenter}/vm/#{folder_parts.join('/')}" - end - folders - end - - def get_base_folders(folders) - base = [] - folders.each do |_key, value| - base << value - end - base.uniq - end - - def purge_unconfigured_resources(allowlist) - configured_folders = pool_folders(name) - base_folders = get_base_folders(configured_folders) + def purge_unconfigured_folders(base_folders, configured_folders, whitelist) @connection_pool.with_metrics do |pool_object| connection = ensured_vsphere_connection(pool_object) @@ -157,7 +129,7 @@ module Vmpooler folder_children.each do |folder_hash| folder_hash.each do |folder_title, folder_object| - destroy_folder_and_children(folder_object) unless folder_configured?(folder_title, base_folder, configured_folders, allowlist) + destroy_folder_and_children(folder_object) unless folder_configured?(folder_title, base_folder, configured_folders, whitelist) end end end @@ -392,16 +364,6 @@ module Vmpooler vm_hash end - # The inner method requires vmware tools running in the guest os - def get_vm_ip_address(vm_name, pool_name) - @connection_pool.with_metrics do |pool_object| - connection = ensured_vsphere_connection(pool_object) - vm_object = find_vm(pool_name, vm_name, connection) - vm_hash = generate_vm_hash(vm_object, pool_name) - return vm_hash['ip'] - end - end - def create_config_spec(vm_name, template_name, extra_config) RbVmomi::VIM.VirtualMachineConfigSpec( annotation: JSON.pretty_generate( @@ -555,15 +517,13 @@ module Vmpooler true end - def vm_ready?(pool_name, vm_name, redis) + def vm_ready?(_pool_name, vm_name) begin - domain = domain(pool_name) - open_socket(vm_name, domain) - rescue StandardError => e - redis.hset("vmpooler__vm__#{vm_name}", 'open_socket_error', e.to_s) + open_socket(vm_name, global_config[:config]['domain']) + rescue StandardError => _e return false end - redis.hdel("vmpooler__vm__#{vm_name}", 'open_socket_error') + true end @@ -599,30 +559,13 @@ module Vmpooler boottime = vm_object.runtime.bootTime if vm_object.runtime&.bootTime powerstate = vm_object.runtime.powerState if vm_object.runtime&.powerState - ip_maxloop = 240 - ip_loop_delay = 1 - ip_loop_count = 1 - ip = nil - invalid_addresses = /(0|169)\.(0|254)\.\d+\.\d+/ - while ip.nil? - sleep(ip_loop_delay) - ip = vm_object.guest_ip - ip = nil if !ip.nil? && ip.match?(invalid_addresses) - unless ip_maxloop == 0 - break if ip_loop_count >= ip_maxloop - - ip_loop_count += 1 - end - end - { 'name' => vm_object.name, 'hostname' => hostname, 'template' => pool_configuration['template'], 'poolname' => pool_name, 'boottime' => boottime, - 'powerstate' => powerstate, - 'ip' => ip + 'powerstate' => powerstate } end @@ -666,13 +609,15 @@ module Vmpooler # This should supercede the open_socket method in the Pool Manager def open_socket(host, domain = nil, timeout = 5, port = 22, &_block) - target_host = host - target_host = "#{host}.#{domain}" if domain - sock = TCPSocket.new(target_host, port, connect_timeout: timeout) - begin - yield sock if block_given? - ensure - sock.close + Timeout.timeout(timeout) do + target_host = host + target_host = "#{host}.#{domain}" if domain + sock = TCPSocket.new target_host, port + begin + yield sock if block_given? + ensure + sock.close + end end end @@ -1103,9 +1048,6 @@ module Vmpooler begin connection = ensured_vsphere_connection(pool_object) vm_hash = get_vm_details(pool_name, vm_name, connection) - - raise StandardError, 'failed to get vm details. vm is unreachable or no longer exists' if vm_hash.nil? - @redis.with_metrics do |redis| redis.hset("vmpooler__vm__#{vm_name}", 'host', vm_hash['host_name']) migration_count = redis.scard('vmpooler__migration') @@ -1140,10 +1082,10 @@ module Vmpooler target_host_object = find_host_by_dnsname(connection, target_host_name) finish = migrate_vm_and_record_timing(pool_name, vm_name, vm_hash, target_host_object, target_host_name) @redis.with_metrics do |redis| - redis.multi do |transaction| - transaction.hset("vmpooler__vm__#{vm_name}", 'host', target_host_name) - transaction.hset("vmpooler__vm__#{vm_name}", 'migrated', 'true') - end + redis.multi + redis.hset("vmpooler__vm__#{vm_name}", 'host', target_host_name) + redis.hset("vmpooler__vm__#{vm_name}", 'migrated', true) + redis.exec end logger.log('s', "[>] [#{pool_name}] '#{vm_name}' migrated from #{vm_hash['host_name']} to #{target_host_name} in #{finish} seconds") ensure @@ -1161,10 +1103,10 @@ module Vmpooler metrics.increment("migrate_to.#{dest_host_name}") @redis.with_metrics do |redis| checkout_to_migration = format('%