This repository has been archived by the owner on May 12, 2021. It is now read-only.
-
Notifications
You must be signed in to change notification settings - Fork 373
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
virtcontainers: storage: Separate storage interface from implementations
The storage implementation of filesystem was in the same file where the resource storage interface was declared. It's more proper to separate implementations and interface into different files. Fixes #633 Signed-off-by: Sebastien Boeuf <[email protected]>
- Loading branch information
Sebastien Boeuf
committed
Aug 23, 2018
1 parent
26f0430
commit 8b20c3f
Showing
3 changed files
with
67 additions
and
54 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
File renamed without changes.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,67 @@ | ||
// Copyright (c) 2018 Intel Corporation | ||
// | ||
// SPDX-License-Identifier: Apache-2.0 | ||
// | ||
|
||
package virtcontainers | ||
|
||
import ( | ||
"context" | ||
"encoding/json" | ||
|
||
"github.com/kata-containers/runtime/virtcontainers/device/api" | ||
) | ||
|
||
// TypedDevice is used as an intermediate representation for marshalling | ||
// and unmarshalling Device implementations. | ||
type TypedDevice struct { | ||
Type string | ||
|
||
// Data is assigned the Device object. | ||
// This being declared as RawMessage prevents it from being marshalled/unmarshalled. | ||
// We do that explicitly depending on Type. | ||
Data json.RawMessage | ||
} | ||
|
||
// resourceStorage is the virtcontainers resources (configuration, state, etc...) | ||
// storage interface. | ||
// The default resource storage implementation is filesystem. | ||
type resourceStorage interface { | ||
// Create all resources for a sandbox | ||
createAllResources(ctx context.Context, sandbox *Sandbox) error | ||
|
||
// Resources URIs functions return both the URI | ||
// for the actual resource and the URI base. | ||
containerURI(sandboxID, containerID string, resource sandboxResource) (string, string, error) | ||
sandboxURI(sandboxID string, resource sandboxResource) (string, string, error) | ||
|
||
// Sandbox resources | ||
storeSandboxResource(sandboxID string, resource sandboxResource, data interface{}) error | ||
deleteSandboxResources(sandboxID string, resources []sandboxResource) error | ||
fetchSandboxConfig(sandboxID string) (SandboxConfig, error) | ||
fetchSandboxState(sandboxID string) (State, error) | ||
fetchSandboxNetwork(sandboxID string) (NetworkNamespace, error) | ||
storeSandboxNetwork(sandboxID string, networkNS NetworkNamespace) error | ||
fetchSandboxDevices(sandboxID string) ([]api.Device, error) | ||
storeSandboxDevices(sandboxID string, devices []api.Device) error | ||
|
||
// Hypervisor resources | ||
fetchHypervisorState(sandboxID string, state interface{}) error | ||
storeHypervisorState(sandboxID string, state interface{}) error | ||
|
||
// Agent resources | ||
fetchAgentState(sandboxID string, state interface{}) error | ||
storeAgentState(sandboxID string, state interface{}) error | ||
|
||
// Container resources | ||
storeContainerResource(sandboxID, containerID string, resource sandboxResource, data interface{}) error | ||
deleteContainerResources(sandboxID, containerID string, resources []sandboxResource) error | ||
fetchContainerConfig(sandboxID, containerID string) (ContainerConfig, error) | ||
fetchContainerState(sandboxID, containerID string) (State, error) | ||
fetchContainerProcess(sandboxID, containerID string) (Process, error) | ||
storeContainerProcess(sandboxID, containerID string, process Process) error | ||
fetchContainerMounts(sandboxID, containerID string) ([]Mount, error) | ||
storeContainerMounts(sandboxID, containerID string, mounts []Mount) error | ||
fetchContainerDevices(sandboxID, containerID string) ([]ContainerDevice, error) | ||
storeContainerDevices(sandboxID, containerID string, devices []ContainerDevice) error | ||
} |