Skip to content
GitLab
Menu
Projects
Groups
Snippets
Help
Projects
Groups
Snippets
Help
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Sign in
Toggle navigation
Menu
Open sidebar
小 白蛋
Packer
Commits
2f09eb5b
Commit
2f09eb5b
authored
11 years ago
by
Mitchell Hashimoto
Browse files
Options
Download
Email Patches
Plain Diff
post-processor/vagrant: vmware
parent
23e73b12
main
actions/fix-check-links
azr/mini-dag
azr_acc_test_install_n_run_single_plugins
azr_implicit_requried_plugin_2
azr_remove_amazon_builder
b-azure_arm-cert-timeout
backport/brk.feat/remove-website-code/horribly-finer-bison
backport/clarify-builders-page/promptly-fun-cheetah
backport/nywilken/update-plugins-link/steadily-ace-bear
backport/update-docs-hcp-packer-ga/deeply-capital-malamute
backport/update-docs-hcp-packer-ga/slowly-golden-narwhal
backport/update-docs-hcp-packer-ga/solely-renewing-chipmunk
brk.feat/mdx-v2
build-after-tests
bump_hcp_sdk_go
config_docs
crt-onboarding-test
d-powershell-generated-docs
dependabot/github_actions/slackapi/slack-github-action-1.19.0
example-test
extract_outscale
f-inspect-regression
fix_1000
fix_100000
hcp-packer-registry-pps
improved-error-handling-hcp-packer
linode-hcp-ready
mode-check
nywilken/update-external-plugins
packer-plugin-dev-documentation-updates
poc/packer-init
pr/10199
release/1.7.x
release/1.8.x
revert-6594-mode-check
stable-website
testing_hcp_rewrite_two
update-alert-banner
update-community-codeowners
update_sdk
use_progress_bar
validate_locals
vscode-customization
wilken/hcl2_upgrade-legacy-mode
wilken/implicitly-required-plugins-legacy-mode
wilken/packer-legacy-mode
wilken/packer-par-client
zs.draft-empty-page-check-script
1.5.0
v1.8.0
v1.7.10
v1.7.9
v1.7.8
v1.7.7
v1.7.6
v1.7.5
v1.7.4
v1.7.3
v1.7.2
v1.7.1
v1.7.0
v1.6.6
v1.6.5
v1.6.4
v1.6.3
v1.6.2
v1.6.1
v1.6.0
v1.5.6
v1.5.5
v1.5.4
v1.5.3
v1.5.2
v1.5.1
v1.5.0
v1.4.5
v1.4.4
v1.4.3
v1.4.2
v1.4.1
v1.4.0
v1.3.5
v1.3.4
v1.3.3
v1.3.2
v1.3.1
v1.3.0
v1.2.5
v1.2.4
v1.2.3
v1.2.2
v1.2.1
v1.2.0
v1.1.3
v1.1.2
v1.1.1
v1.1.0
v1.0.4
v1.0.3
v1.0.2
v1.0.1
v1.0.0
v1.0.0-rc3
v1.0.0-rc2
v1.0.0-rc1
v0.12.3
v0.12.2
v0.12.1
v0.12.0
v0.11.0
v0.10.2
v0.10.1
v0.10.0
v0.9.0
v0.9.0-rc2
v0.8.6
v0.8.5
v0.8.3
v0.8.2
v0.8.1
v0.8.0
v0.7.5
v0.7.2
v0.7.1
v0.7.0
v0.6.1
v0.6.0
nightly
list
No related merge requests found
Changes
2
Hide whitespace changes
Inline
Side-by-side
Showing
2 changed files
post-processor/vagrant/vmware.go
+7
-120
post-processor/vagrant/vmware.go
post-processor/vagrant/vmware_test.go
+2
-7
post-processor/vagrant/vmware_test.go
with
9 additions
and
127 deletions
+9
-127
post-processor/vagrant/vmware.go
+
7
-
120
View file @
2f09eb5b
package
vagrant
import
(
"compress/flate"
"fmt"
"github.com/mitchellh/packer/common"
"github.com/mitchellh/packer/packer"
"io/ioutil"
"os"
"path/filepath"
"strconv"
)
type
VMwareBoxConfig
struct
{
common
.
PackerConfig
`mapstructure:",squash"`
type
VMwareProvider
struct
{}
OutputPath
string
`mapstructure:"output"`
VagrantfileTemplate
string
`mapstructure:"vagrantfile_template"`
CompressionLevel
string
`mapstructure:"compression_level"`
tpl
*
packer
.
ConfigTemplate
}
type
VMwareBoxPostProcessor
struct
{
config
VMwareBoxConfig
}
func
(
p
*
VMwareBoxPostProcessor
)
Configure
(
raws
...
interface
{})
error
{
md
,
err
:=
common
.
DecodeConfig
(
&
p
.
config
,
raws
...
)
if
err
!=
nil
{
return
err
}
p
.
config
.
tpl
,
err
=
packer
.
NewConfigTemplate
()
if
err
!=
nil
{
return
err
}
p
.
config
.
tpl
.
UserVars
=
p
.
config
.
PackerUserVars
// Accumulate any errors
errs
:=
common
.
CheckUnusedConfig
(
md
)
validates
:=
map
[
string
]
*
string
{
"output"
:
&
p
.
config
.
OutputPath
,
"vagrantfile_template"
:
&
p
.
config
.
VagrantfileTemplate
,
"compression_level"
:
&
p
.
config
.
CompressionLevel
,
}
for
n
,
ptr
:=
range
validates
{
if
err
:=
p
.
config
.
tpl
.
Validate
(
*
ptr
);
err
!=
nil
{
errs
=
packer
.
MultiErrorAppend
(
errs
,
fmt
.
Errorf
(
"Error parsing %s: %s"
,
n
,
err
))
}
}
if
errs
!=
nil
&&
len
(
errs
.
Errors
)
>
0
{
return
errs
}
return
nil
}
func
(
p
*
VMwareBoxPostProcessor
)
PostProcess
(
ui
packer
.
Ui
,
artifact
packer
.
Artifact
)
(
packer
.
Artifact
,
bool
,
error
)
{
// Compile the output path
outputPath
,
err
:=
p
.
config
.
tpl
.
Process
(
p
.
config
.
OutputPath
,
&
OutputPathTemplate
{
ArtifactId
:
artifact
.
Id
(),
BuildName
:
p
.
config
.
PackerBuildName
,
Provider
:
"vmware"
,
})
if
err
!=
nil
{
return
nil
,
false
,
err
}
// Create a temporary directory for us to build the contents of the box in
dir
,
err
:=
ioutil
.
TempDir
(
""
,
"packer"
)
if
err
!=
nil
{
return
nil
,
false
,
err
}
defer
os
.
RemoveAll
(
dir
)
func
(
p
*
VMwareProvider
)
Process
(
ui
packer
.
Ui
,
artifact
packer
.
Artifact
,
dir
string
)
(
vagrantfile
string
,
metadata
map
[
string
]
interface
{},
err
error
)
{
// Create the metadata
metadata
=
map
[
string
]
interface
{}{
"provider"
:
"vmware_desktop"
}
// Copy all of the original contents into the temporary directory
for
_
,
path
:=
range
artifact
.
Files
()
{
ui
.
Message
(
fmt
.
Sprintf
(
"Copying: %s"
,
path
))
dstPath
:=
filepath
.
Join
(
dir
,
filepath
.
Base
(
path
))
if
err
:=
CopyContents
(
dstPath
,
path
);
err
!=
nil
{
return
nil
,
false
,
err
}
}
if
p
.
config
.
VagrantfileTemplate
!=
""
{
f
,
err
:=
os
.
Open
(
p
.
config
.
VagrantfileTemplate
)
if
err
!=
nil
{
return
nil
,
false
,
err
}
defer
f
.
Close
()
contents
,
err
:=
ioutil
.
ReadAll
(
f
)
if
err
!=
nil
{
return
nil
,
false
,
err
}
// Create the Vagrantfile from the template
vf
,
err
:=
os
.
Create
(
filepath
.
Join
(
dir
,
"Vagrantfile"
))
if
err
!=
nil
{
return
nil
,
false
,
err
if
err
=
CopyContents
(
dstPath
,
path
);
err
!=
nil
{
return
}
defer
vf
.
Close
()
vagrantfileContents
,
err
:=
p
.
config
.
tpl
.
Process
(
string
(
contents
),
nil
)
if
err
!=
nil
{
return
nil
,
false
,
fmt
.
Errorf
(
"Error writing Vagrantfile: %s"
,
err
)
}
vf
.
Write
([]
byte
(
vagrantfileContents
))
vf
.
Close
()
}
var
level
int
=
flate
.
DefaultCompression
if
p
.
config
.
CompressionLevel
!=
""
{
level
,
err
=
strconv
.
Atoi
(
p
.
config
.
CompressionLevel
)
if
err
!=
nil
{
return
nil
,
false
,
err
}
}
// Create the metadata
metadata
:=
map
[
string
]
string
{
"provider"
:
"vmware_desktop"
}
if
err
:=
WriteMetadata
(
dir
,
metadata
);
err
!=
nil
{
return
nil
,
false
,
err
}
// Compress the directory to the given output path
ui
.
Message
(
fmt
.
Sprintf
(
"Compressing box..."
))
if
err
:=
DirToBox
(
outputPath
,
dir
,
ui
,
level
);
err
!=
nil
{
return
nil
,
false
,
err
}
return
NewArtifact
(
"vmware"
,
outputPath
),
false
,
nil
return
}
This diff is collapsed.
Click to expand it.
post-processor/vagrant/vmware_test.go
+
2
-
7
View file @
2f09eb5b
package
vagrant
import
(
"github.com/mitchellh/packer/packer"
"testing"
)
func
TestVMwareBoxPostProcessor_ImplementsPostProcessor
(
t
*
testing
.
T
)
{
var
raw
interface
{}
raw
=
&
VMwareBoxPostProcessor
{}
if
_
,
ok
:=
raw
.
(
packer
.
PostProcessor
);
!
ok
{
t
.
Fatalf
(
"VMware PostProcessor should be a PostProcessor"
)
}
func
TestVMwareProvider_impl
(
t
*
testing
.
T
)
{
var
_
Provider
=
new
(
VMwareProvider
)
}
This diff is collapsed.
Click to expand it.
Write
Preview
Supports
Markdown
0%
Try again
or
attach a new file
.
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment
Menu
Projects
Groups
Snippets
Help