Skip to content

Commit

Permalink
Fill in HyperV field if sandbox option is set (#1388)
Browse files Browse the repository at this point in the history
As part of the work to get WCOW-Hypervisor working for the upstream 
Containerd CRI plugin, parse our shims SandboxIsolation field here and 
set the HyperV runtime spec field if it's set to the HYPERVISOR option. 
This avoids us needing to parse our shim specific options in upstream 
Containerd which is always a plus.

Signed-off-by: Daniel Canter <[email protected]>
  • Loading branch information
dcantah authored May 6, 2022
1 parent d12d411 commit 18f4761
Showing 1 changed file with 14 additions and 11 deletions.
25 changes: 14 additions & 11 deletions cmd/containerd-shim-runhcs-v1/service_internal.go
Original file line number Diff line number Diff line change
Expand Up @@ -104,6 +104,18 @@ func (s *service) createInternal(ctx context.Context, req *task.CreateTaskReques
return nil, errors.Wrap(err, "unable to process OCI Spec annotations")
}

// If sandbox isolation is set to hypervisor, make sure the HyperV option
// is filled in. This lessens the burden on Containerd to parse our shims
// options if we can set this ourselves.
if shimOpts.SandboxIsolation == runhcsopts.Options_HYPERVISOR {
if spec.Windows == nil {
spec.Windows = &specs.Windows{}
}
if spec.Windows.HyperV == nil {
spec.Windows.HyperV = &specs.WindowsHyperV{}
}
}

if len(req.Rootfs) == 0 {
// If no mounts are passed via the snapshotter its the callers full
// responsibility to manage the storage. Just move on without affecting
Expand Down Expand Up @@ -133,17 +145,8 @@ func (s *service) createInternal(ctx context.Context, req *task.CreateTaskReques
}
}

if m.Type == "lcow-layer" {
// If we are creating LCOW make sure that spec.Windows is filled out before
// appending layer folders.
if spec.Windows == nil {
spec.Windows = &specs.Windows{}
}
if spec.Windows.HyperV == nil {
spec.Windows.HyperV = &specs.WindowsHyperV{}
}
} else if spec.Windows.HyperV == nil {
// This is a Windows Argon make sure that we have a Root filled in.
// This is a Windows Argon make sure that we have a Root filled in.
if spec.Windows.HyperV == nil {
if spec.Root == nil {
spec.Root = &specs.Root{}
}
Expand Down

0 comments on commit 18f4761

Please sign in to comment.