2
Copyright (c) 2014 VMware, Inc. All Rights Reserved.
4
Licensed under the Apache License, Version 2.0 (the "License");
5
you may not use this file except in compliance with the License.
6
You may obtain a copy of the License at
8
http://www.apache.org/licenses/LICENSE-2.0
10
Unless required by applicable law or agreed to in writing, software
11
distributed under the License is distributed on an "AS IS" BASIS,
12
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13
See the License for the specific language governing permissions and
14
limitations under the License.
20
"github.com/juju/govmomi/vim25"
21
"github.com/juju/govmomi/vim25/methods"
22
"github.com/juju/govmomi/vim25/mo"
23
"github.com/juju/govmomi/vim25/types"
24
"golang.org/x/net/context"
31
func NewFolder(c *vim25.Client, ref types.ManagedObjectReference) *Folder {
33
Common: NewCommon(c, ref),
37
func NewRootFolder(c *vim25.Client) *Folder {
38
return NewFolder(c, c.ServiceContent.RootFolder)
41
func (f Folder) Children(ctx context.Context) ([]Reference, error) {
44
err := f.Properties(ctx, f.Reference(), []string{"childEntity"}, &mf)
50
for _, e := range mf.ChildEntity {
51
if r := NewReference(f.c, e); r != nil {
59
func (f Folder) CreateDatacenter(ctx context.Context, datacenter string) (*Datacenter, error) {
60
req := types.CreateDatacenter{
65
res, err := methods.CreateDatacenter(ctx, f.c, &req)
70
// Response will be nil if this is an ESX host that does not belong to a vCenter
75
return NewDatacenter(f.c, res.Returnval), nil
78
func (f Folder) CreateFolder(ctx context.Context, name string) (*Folder, error) {
79
req := types.CreateFolder{
84
res, err := methods.CreateFolder(ctx, f.c, &req)
89
return NewFolder(f.c, res.Returnval), err
92
func (f Folder) CreateVM(ctx context.Context, config types.VirtualMachineConfigSpec, pool *ResourcePool, host *HostSystem) (*Task, error) {
93
req := types.CreateVM_Task{
96
Pool: pool.Reference(),
100
ref := host.Reference()
104
res, err := methods.CreateVM_Task(ctx, f.c, &req)
109
return NewTask(f.c, res.Returnval), nil
112
func (f Folder) RegisterVM(ctx context.Context, path string, name string, asTemplate bool, pool *ResourcePool, host *HostSystem) (*Task, error) {
113
req := types.RegisterVM_Task{
116
AsTemplate: asTemplate,
124
ref := host.Reference()
129
ref := pool.Reference()
133
res, err := methods.RegisterVM_Task(ctx, f.c, &req)
138
return NewTask(f.c, res.Returnval), nil