diff --git a/manifests/flyway.pp b/manifests/flyway.pp index b28ae45..c481406 100644 --- a/manifests/flyway.pp +++ b/manifests/flyway.pp @@ -34,14 +34,35 @@ include ::java Class['::java'] -> Database_schema::Flyway_migration<||> } - - archive { "flyway-commandline-${version}": - ensure => $ensure, - url => $real_source, - target => $target_dir, - root_dir => "flyway-${version}", - checksum => false + + $archive_metadata = load_module_metadata('archive') + + if $archive_metadata['name'] == 'camptocamp-archive' { + archive { "flyway-commandline-${version}": + ensure => $ensure, + url => $real_source, + target => $target_dir, + root_dir => "flyway-${version}", + checksum => false, + } + } elsif $archive_metadata['name'] == 'puppet-archive' { + if $ensure == 'absent' { + file { "${target_dir}/flyway-${version}": + ensure => 'absent', + force => true, + } + } + archive { "/tmp/flyway-commandline-${version}.tar.gz": + ensure => $ensure, + extract => true, + extract_path => $target_dir, + source => $real_source, + creates => "${target_dir}/flyway-${version}", + cleanup => true, + } + } else { + fail("database_schema depends on puppet-archive or camptocamp-archive") } - + Class['database_schema::flyway'] -> Database_schema::Flyway_migration<||> -} \ No newline at end of file +} diff --git a/manifests/liquibase.pp b/manifests/liquibase.pp index 6efe51b..12091cc 100644 --- a/manifests/liquibase.pp +++ b/manifests/liquibase.pp @@ -30,29 +30,44 @@ undef => "http://repo1.maven.org/maven2/org/liquibase/liquibase-core/${version}/liquibase-core-${version}-bin.tar.gz", default => $source } - + $dir_ensure = $ensure ? { absent => absent, default => directory } - + if $ensure == present and $manage_java { include ::java Class['::java'] -> Database_schema::Liquibase_migration<||> } - + file { "${target_dir}/liquibase": ensure => $dir_ensure, - force => true + force => true, } - - archive { "liquibase-core-${version}-bin": - ensure => $ensure, - url => $real_source, - target => "${target_dir}/liquibase", - root_dir => 'liquibase', - checksum => false + + $archive_metadata = load_module_metadata('archive') + + if $archive_metadata['name'] == 'camptocamp-archive' { + archive { "liquibase-core-${version}-bin": + ensure => $ensure, + url => $real_source, + target => "${target_dir}/liquibase", + root_dir => 'liquibase', + checksum => false, + } + } elsif $archive_metadata['name'] == 'puppet-archive' { + archive { "/tmp/liquibase-core-${version}-bin.tar.gz": + ensure => $ensure, + extract => true, + extract_path => "${target_dir}/liquibase", + source => $real_source, + creates => "${target_dir}/liquibase/liquibase.jar", + cleanup => true, + } + } else { + fail("database_schema depends on puppet-archive or camptocamp-archive") } - + Class['database_schema::liquibase'] -> Database_schema::Liquibase_migration<||> -} \ No newline at end of file +} diff --git a/metadata.json b/metadata.json index f61972f..533beb0 100644 --- a/metadata.json +++ b/metadata.json @@ -1,9 +1,9 @@ { "author": "Chris Pitman", "dependencies": [ - {"name":"puppetlabs/stdlib","version_requirement":">= 3.2.0 < 5.0.0"}, - {"name":"camptocamp/archive","version_requirement":"0.x"}, - {"name":"puppetlabs/java","version_requirement":"1.x"} + {"name":"puppetlabs/stdlib","version_requirement":">= 4.8.0 < 5.0.0"}, + {"name":"camptocamp/archive","version_requirement":"0.x"}, + {"name":"puppetlabs/java","version_requirement":"1.x"} ], "license": "MIT", "name": "cpitman-database_schema", @@ -28,4 +28,4 @@ "summary": "Manages database schema configuration via standard schema migration tools.", "tags": ["database", "mysql", "postgres", "postgresql", "pgsql", "mysql", "mariadb"], "version": "1.1.0" -} \ No newline at end of file +}