The following pull request was submitted through Github.
It can be accessed and reviewed at: https://github.com/lxc/lxd/pull/6209

This e-mail was sent by the LXC bot, direct replies will not reach the author
unless they happen to be subscribed to this list.

=== Description (from pull-request) ===
 And changes import alias to instanceDBTypes.

This is to accommodate the Instance interface being added to the lxd/instance package without creating import loops.

Signed-off-by: Thomas Parrott <t...@tomp.uk>
From 49ba8f46f4e050806c488fb5facd3c4d1ee48397 Mon Sep 17 00:00:00 2001
From: Thomas Parrott <t...@tomp.uk>
Date: Mon, 16 Sep 2019 09:58:51 +0100
Subject: [PATCH] lxd: Renames instance package to types and changes import
 alias to instanceDBTypes

This is to accommodate the Instance interface being added to the lxd/instance 
package without creating import loops.

Signed-off-by: Thomas Parrott <t...@tomp.uk>
---
 lxd/api_internal.go                           |  6 ++--
 lxd/cluster/connect.go                        |  4 +--
 lxd/container.go                              | 10 +++---
 lxd/container_lxc.go                          |  6 ++--
 lxd/container_post.go                         |  4 +--
 lxd/container_test.go                         | 32 +++++++++----------
 lxd/containers_get.go                         | 16 +++++-----
 lxd/containers_post.go                        | 12 +++----
 lxd/db/containers.go                          | 32 +++++++++----------
 lxd/db/containers_test.go                     | 20 ++++++------
 lxd/db/images.go                              | 14 ++++----
 lxd/db/instances.mapper.go                    |  4 +--
 lxd/db/snapshots_test.go                      |  6 ++--
 lxd/device/device_instance_id.go              |  4 +--
 lxd/device/disk.go                            |  4 +--
 lxd/device/gpu.go                             |  4 +--
 lxd/device/infiniband_physical.go             |  4 +--
 lxd/device/infiniband_sriov.go                |  4 +--
 lxd/device/nic_bridged.go                     |  4 +--
 lxd/device/nic_ipvlan.go                      |  4 +--
 lxd/device/nic_macvlan.go                     |  4 +--
 lxd/device/nic_p2p.go                         |  4 +--
 lxd/device/nic_physical.go                    |  4 +--
 lxd/device/nic_sriov.go                       |  4 +--
 lxd/device/proxy.go                           |  4 +--
 lxd/device/unix_common.go                     |  4 +--
 lxd/device/usb.go                             |  4 +--
 lxd/images.go                                 | 10 +++---
 .../{instance.go => types/instance_types.go}  |  0
 lxd/logging.go                                |  4 +--
 lxd/main_activateifneeded.go                  |  4 +--
 lxd/response.go                               |  4 +--
 lxd/storage_lvm_utils.go                      |  4 +--
 lxd/storage_migration.go                      |  4 +--
 34 files changed, 126 insertions(+), 126 deletions(-)
 rename lxd/instance/{instance.go => types/instance_types.go} (100%)

diff --git a/lxd/api_internal.go b/lxd/api_internal.go
index 06b05f3f35..ad74e0d05a 100644
--- a/lxd/api_internal.go
+++ b/lxd/api_internal.go
@@ -22,7 +22,7 @@ import (
        "github.com/lxc/lxd/lxd/db/node"
        "github.com/lxc/lxd/lxd/db/query"
        deviceConfig "github.com/lxc/lxd/lxd/device/config"
-       "github.com/lxc/lxd/lxd/instance"
+       instanceDBTypes "github.com/lxc/lxd/lxd/instance/types"
        "github.com/lxc/lxd/lxd/project"
        driver "github.com/lxc/lxd/lxd/storage"
        "github.com/lxc/lxd/shared"
@@ -906,7 +906,7 @@ func internalImport(d *Daemon, r *http.Request) Response {
                BaseImage:    baseImage,
                Config:       backup.Container.Config,
                CreationDate: backup.Container.CreatedAt,
-               Type:         instance.TypeContainer,
+               Type:         instanceDBTypes.TypeContainer,
                Description:  backup.Container.Description,
                Devices:      deviceConfig.NewDevices(backup.Container.Devices),
                Ephemeral:    backup.Container.Ephemeral,
@@ -1012,7 +1012,7 @@ func internalImport(d *Daemon, r *http.Request) Response {
                        BaseImage:    baseImage,
                        Config:       snap.Config,
                        CreationDate: snap.CreatedAt,
-                       Type:         instance.TypeContainer,
+                       Type:         instanceDBTypes.TypeContainer,
                        Snapshot:     true,
                        Devices:      deviceConfig.NewDevices(snap.Devices),
                        Ephemeral:    snap.Ephemeral,
diff --git a/lxd/cluster/connect.go b/lxd/cluster/connect.go
index 6f26255894..0ac689e919 100644
--- a/lxd/cluster/connect.go
+++ b/lxd/cluster/connect.go
@@ -7,7 +7,7 @@ import (
 
        lxd "github.com/lxc/lxd/client"
        "github.com/lxc/lxd/lxd/db"
-       "github.com/lxc/lxd/lxd/instance"
+       instanceDBTypes "github.com/lxc/lxd/lxd/instance/types"
        "github.com/lxc/lxd/shared"
        "github.com/lxc/lxd/shared/api"
        "github.com/pkg/errors"
@@ -38,7 +38,7 @@ func Connect(address string, cert *shared.CertInfo, notify 
bool) (lxd.InstanceSe
 // running the container with the given name. If it's not the local node will
 // connect to it and return the connected client, otherwise it will just return
 // nil.
-func ConnectIfContainerIsRemote(cluster *db.Cluster, project, name string, 
cert *shared.CertInfo, instanceType instance.Type) (lxd.InstanceServer, error) {
+func ConnectIfContainerIsRemote(cluster *db.Cluster, project, name string, 
cert *shared.CertInfo, instanceType instanceDBTypes.Type) (lxd.InstanceServer, 
error) {
        var address string // Node address
        err := cluster.Transaction(func(tx *db.ClusterTx) error {
                var err error
diff --git a/lxd/container.go b/lxd/container.go
index dc97c5686c..f34ba574a3 100644
--- a/lxd/container.go
+++ b/lxd/container.go
@@ -20,7 +20,7 @@ import (
        "github.com/lxc/lxd/lxd/db"
        "github.com/lxc/lxd/lxd/device"
        "github.com/lxc/lxd/lxd/device/config"
-       "github.com/lxc/lxd/lxd/instance"
+       instanceDBTypes "github.com/lxc/lxd/lxd/instance/types"
        "github.com/lxc/lxd/lxd/state"
        "github.com/lxc/lxd/lxd/sys"
        "github.com/lxc/lxd/lxd/task"
@@ -293,7 +293,7 @@ type container interface {
        Location() string
        Project() string
        Name() string
-       Type() instance.Type
+       Type() instanceDBTypes.Type
        Description() string
        Architecture() int
        CreationDate() time.Time
@@ -452,7 +452,7 @@ func containerCreateFromImage(d *Daemon, args 
db.ContainerArgs, hash string, tra
        }
 
        // Validate the type of the image matches the type of the instance.
-       imgType, err := instance.New(img.Type)
+       imgType, err := instanceDBTypes.New(img.Type)
        if err != nil {
                return nil, err
        }
@@ -1094,7 +1094,7 @@ func containerLoadByProject(s *state.State, project 
string) ([]container, error)
        err := s.Cluster.Transaction(func(tx *db.ClusterTx) error {
                filter := db.InstanceFilter{
                        Project: project,
-                       Type:    instance.TypeContainer,
+                       Type:    instanceDBTypes.TypeContainer,
                }
                var err error
                cts, err = tx.InstanceList(filter)
@@ -1162,7 +1162,7 @@ func containerLoadNodeAll(s *state.State) ([]container, 
error) {
 }
 
 // Load all containers of this nodes under the given project.
-func containerLoadNodeProjectAll(s *state.State, project string, instanceType 
instance.Type) ([]container, error) {
+func containerLoadNodeProjectAll(s *state.State, project string, instanceType 
instanceDBTypes.Type) ([]container, error) {
        // Get all the container arguments
        var cts []db.Instance
        err := s.Cluster.Transaction(func(tx *db.ClusterTx) error {
diff --git a/lxd/container_lxc.go b/lxd/container_lxc.go
index 140b735cd6..083d6f8427 100644
--- a/lxd/container_lxc.go
+++ b/lxd/container_lxc.go
@@ -30,7 +30,7 @@ import (
        "github.com/lxc/lxd/lxd/db/query"
        "github.com/lxc/lxd/lxd/device"
        "github.com/lxc/lxd/lxd/device/config"
-       "github.com/lxc/lxd/lxd/instance"
+       instanceDBTypes "github.com/lxc/lxd/lxd/instance/types"
        "github.com/lxc/lxd/lxd/maas"
        "github.com/lxc/lxd/lxd/project"
        "github.com/lxc/lxd/lxd/state"
@@ -595,7 +595,7 @@ func containerLXCInstantiate(s *state.State, args 
db.ContainerArgs) *containerLX
 type containerLXC struct {
        // Properties
        architecture int
-       dbType       instance.Type
+       dbType       instanceDBTypes.Type
        snapshot     bool
        creationDate time.Time
        lastUsedDate time.Time
@@ -633,7 +633,7 @@ type containerLXC struct {
        expiryDate time.Time
 }
 
-func (c *containerLXC) Type() instance.Type {
+func (c *containerLXC) Type() instanceDBTypes.Type {
        return c.dbType
 }
 
diff --git a/lxd/container_post.go b/lxd/container_post.go
index e428b0d098..8492a6d495 100644
--- a/lxd/container_post.go
+++ b/lxd/container_post.go
@@ -14,7 +14,7 @@ import (
        lxd "github.com/lxc/lxd/client"
        "github.com/lxc/lxd/lxd/cluster"
        "github.com/lxc/lxd/lxd/db"
-       "github.com/lxc/lxd/lxd/instance"
+       instanceDBTypes "github.com/lxc/lxd/lxd/instance/types"
        driver "github.com/lxc/lxd/lxd/storage"
        "github.com/lxc/lxd/shared"
        "github.com/lxc/lxd/shared/api"
@@ -400,7 +400,7 @@ func containerPostClusteringMigrate(d *Daemon, c container, 
oldName, newName, ne
 }
 
 // Special case migrating a container backed by ceph across two cluster nodes.
-func containerPostClusteringMigrateWithCeph(d *Daemon, c container, project, 
oldName, newName, newNode string, instanceType instance.Type) Response {
+func containerPostClusteringMigrateWithCeph(d *Daemon, c container, project, 
oldName, newName, newNode string, instanceType instanceDBTypes.Type) Response {
        run := func(*operation) error {
                // If source node is online (i.e. we're serving the request on
                // it, and c != nil), let's unmap the RBD volume locally
diff --git a/lxd/container_test.go b/lxd/container_test.go
index 878b88b24c..b79445f616 100644
--- a/lxd/container_test.go
+++ b/lxd/container_test.go
@@ -8,7 +8,7 @@ import (
 
        "github.com/lxc/lxd/lxd/db"
        "github.com/lxc/lxd/lxd/device/config"
-       "github.com/lxc/lxd/lxd/instance"
+       instanceDBTypes "github.com/lxc/lxd/lxd/instance/types"
        driver "github.com/lxc/lxd/lxd/storage"
        "github.com/lxc/lxd/shared"
        "github.com/lxc/lxd/shared/api"
@@ -21,7 +21,7 @@ type containerTestSuite struct {
 
 func (suite *containerTestSuite) TestContainer_ProfilesDefault() {
        args := db.ContainerArgs{
-               Type:      instance.TypeContainer,
+               Type:      instanceDBTypes.TypeContainer,
                Ephemeral: false,
                Name:      "testFoo",
        }
@@ -63,7 +63,7 @@ func (suite *containerTestSuite) 
TestContainer_ProfilesMulti() {
        }()
 
        args := db.ContainerArgs{
-               Type:      instance.TypeContainer,
+               Type:      instanceDBTypes.TypeContainer,
                Ephemeral: false,
                Profiles:  []string{"default", "unprivileged"},
                Name:      "testFoo",
@@ -86,7 +86,7 @@ func (suite *containerTestSuite) 
TestContainer_ProfilesMulti() {
 
 func (suite *containerTestSuite) TestContainer_ProfilesOverwriteDefaultNic() {
        args := db.ContainerArgs{
-               Type:      instance.TypeContainer,
+               Type:      instanceDBTypes.TypeContainer,
                Ephemeral: false,
                Config:    map[string]string{"security.privileged": "true"},
                Devices: config.Devices{
@@ -116,7 +116,7 @@ func (suite *containerTestSuite) 
TestContainer_ProfilesOverwriteDefaultNic() {
 
 func (suite *containerTestSuite) TestContainer_LoadFromDB() {
        args := db.ContainerArgs{
-               Type:      instance.TypeContainer,
+               Type:      instanceDBTypes.TypeContainer,
                Ephemeral: false,
                Config:    map[string]string{"security.privileged": "true"},
                Devices: config.Devices{
@@ -154,7 +154,7 @@ func (suite *containerTestSuite) TestContainer_LoadFromDB() 
{
 func (suite *containerTestSuite) TestContainer_Path_Regular() {
        // Regular
        args := db.ContainerArgs{
-               Type:      instance.TypeContainer,
+               Type:      instanceDBTypes.TypeContainer,
                Ephemeral: false,
                Name:      "testFoo",
        }
@@ -170,7 +170,7 @@ func (suite *containerTestSuite) 
TestContainer_Path_Regular() {
 
 func (suite *containerTestSuite) TestContainer_LogPath() {
        args := db.ContainerArgs{
-               Type:      instance.TypeContainer,
+               Type:      instanceDBTypes.TypeContainer,
                Ephemeral: false,
                Name:      "testFoo",
        }
@@ -184,7 +184,7 @@ func (suite *containerTestSuite) TestContainer_LogPath() {
 
 func (suite *containerTestSuite) TestContainer_IsPrivileged_Privileged() {
        args := db.ContainerArgs{
-               Type:      instance.TypeContainer,
+               Type:      instanceDBTypes.TypeContainer,
                Ephemeral: false,
                Config:    map[string]string{"security.privileged": "true"},
                Name:      "testFoo",
@@ -199,7 +199,7 @@ func (suite *containerTestSuite) 
TestContainer_IsPrivileged_Privileged() {
 
 func (suite *containerTestSuite) TestContainer_IsPrivileged_Unprivileged() {
        args := db.ContainerArgs{
-               Type:      instance.TypeContainer,
+               Type:      instanceDBTypes.TypeContainer,
                Ephemeral: false,
                Config:    map[string]string{"security.privileged": "false"},
                Name:      "testFoo",
@@ -214,7 +214,7 @@ func (suite *containerTestSuite) 
TestContainer_IsPrivileged_Unprivileged() {
 
 func (suite *containerTestSuite) TestContainer_Rename() {
        args := db.ContainerArgs{
-               Type:      instance.TypeContainer,
+               Type:      instanceDBTypes.TypeContainer,
                Ephemeral: false,
                Name:      "testFoo",
        }
@@ -229,7 +229,7 @@ func (suite *containerTestSuite) TestContainer_Rename() {
 
 func (suite *containerTestSuite) TestContainer_findIdmap_isolated() {
        c1, err := containerCreateInternal(suite.d.State(), db.ContainerArgs{
-               Type: instance.TypeContainer,
+               Type: instanceDBTypes.TypeContainer,
                Name: "isol-1",
                Config: map[string]string{
                        "security.idmap.isolated": "true",
@@ -239,7 +239,7 @@ func (suite *containerTestSuite) 
TestContainer_findIdmap_isolated() {
        defer c1.Delete()
 
        c2, err := containerCreateInternal(suite.d.State(), db.ContainerArgs{
-               Type: instance.TypeContainer,
+               Type: instanceDBTypes.TypeContainer,
                Name: "isol-2",
                Config: map[string]string{
                        "security.idmap.isolated": "true",
@@ -270,7 +270,7 @@ func (suite *containerTestSuite) 
TestContainer_findIdmap_isolated() {
 
 func (suite *containerTestSuite) TestContainer_findIdmap_mixed() {
        c1, err := containerCreateInternal(suite.d.State(), db.ContainerArgs{
-               Type: instance.TypeContainer,
+               Type: instanceDBTypes.TypeContainer,
                Name: "isol-1",
                Config: map[string]string{
                        "security.idmap.isolated": "false",
@@ -280,7 +280,7 @@ func (suite *containerTestSuite) 
TestContainer_findIdmap_mixed() {
        defer c1.Delete()
 
        c2, err := containerCreateInternal(suite.d.State(), db.ContainerArgs{
-               Type: instance.TypeContainer,
+               Type: instanceDBTypes.TypeContainer,
                Name: "isol-2",
                Config: map[string]string{
                        "security.idmap.isolated": "true",
@@ -311,7 +311,7 @@ func (suite *containerTestSuite) 
TestContainer_findIdmap_mixed() {
 
 func (suite *containerTestSuite) TestContainer_findIdmap_raw() {
        c1, err := containerCreateInternal(suite.d.State(), db.ContainerArgs{
-               Type: instance.TypeContainer,
+               Type: instanceDBTypes.TypeContainer,
                Name: "isol-1",
                Config: map[string]string{
                        "security.idmap.isolated": "false",
@@ -350,7 +350,7 @@ func (suite *containerTestSuite) 
TestContainer_findIdmap_maxed() {
 
        for i := 0; i < 7; i++ {
                c, err := containerCreateInternal(suite.d.State(), 
db.ContainerArgs{
-                       Type: instance.TypeContainer,
+                       Type: instanceDBTypes.TypeContainer,
                        Name: fmt.Sprintf("isol-%d", i),
                        Config: map[string]string{
                                "security.idmap.isolated": "true",
diff --git a/lxd/containers_get.go b/lxd/containers_get.go
index 8d42f15da3..de41dd1478 100644
--- a/lxd/containers_get.go
+++ b/lxd/containers_get.go
@@ -15,7 +15,7 @@ import (
        "github.com/lxc/lxd/lxd/cluster"
        "github.com/lxc/lxd/lxd/db"
        "github.com/lxc/lxd/lxd/db/query"
-       "github.com/lxc/lxd/lxd/instance"
+       instanceDBTypes "github.com/lxc/lxd/lxd/instance/types"
        "github.com/lxc/lxd/shared"
        "github.com/lxc/lxd/shared/api"
        "github.com/lxc/lxd/shared/logger"
@@ -24,19 +24,19 @@ import (
 
 // urlInstanceTypeDetect detects what sort of instance type filter is being 
requested. Either
 // explicitly via the instance-type query param or implicitly via the endpoint 
URL used.
-func urlInstanceTypeDetect(r *http.Request) (instance.Type, error) {
+func urlInstanceTypeDetect(r *http.Request) (instanceDBTypes.Type, error) {
        reqInstanceType := r.URL.Query().Get("instance-type")
        if strings.HasPrefix(mux.CurrentRoute(r).GetName(), "container") {
-               return instance.TypeContainer, nil
+               return instanceDBTypes.TypeContainer, nil
        } else if reqInstanceType != "" {
-               instanceType, err := instance.New(reqInstanceType)
+               instanceType, err := instanceDBTypes.New(reqInstanceType)
                if err != nil {
-                       return instance.TypeAny, err
+                       return instanceDBTypes.TypeAny, err
                }
                return instanceType, nil
        }
 
-       return instance.TypeAny, nil
+       return instanceDBTypes.TypeAny, nil
 }
 
 func containersGet(d *Daemon, r *http.Request) Response {
@@ -292,7 +292,7 @@ func doContainersGet(d *Daemon, r *http.Request) 
(interface{}, error) {
 
 // Fetch information about the containers on the given remote node, using the
 // rest API and with a timeout of 30 seconds.
-func doContainersGetFromNode(project, node string, cert *shared.CertInfo, 
instanceType instance.Type) ([]api.Instance, error) {
+func doContainersGetFromNode(project, node string, cert *shared.CertInfo, 
instanceType instanceDBTypes.Type) ([]api.Instance, error) {
        f := func() ([]api.Instance, error) {
                client, err := cluster.Connect(node, cert, true)
                if err != nil {
@@ -329,7 +329,7 @@ func doContainersGetFromNode(project, node string, cert 
*shared.CertInfo, instan
        return containers, err
 }
 
-func doContainersFullGetFromNode(project, node string, cert *shared.CertInfo, 
instanceType instance.Type) ([]api.InstanceFull, error) {
+func doContainersFullGetFromNode(project, node string, cert *shared.CertInfo, 
instanceType instanceDBTypes.Type) ([]api.InstanceFull, error) {
        f := func() ([]api.InstanceFull, error) {
                client, err := cluster.Connect(node, cert, true)
                if err != nil {
diff --git a/lxd/containers_post.go b/lxd/containers_post.go
index 753db8b259..7ba41721e3 100644
--- a/lxd/containers_post.go
+++ b/lxd/containers_post.go
@@ -20,7 +20,7 @@ import (
        "github.com/lxc/lxd/lxd/cluster"
        "github.com/lxc/lxd/lxd/db"
        "github.com/lxc/lxd/lxd/device/config"
-       "github.com/lxc/lxd/lxd/instance"
+       instanceDBTypes "github.com/lxc/lxd/lxd/instance/types"
        "github.com/lxc/lxd/lxd/migration"
        "github.com/lxc/lxd/shared"
        "github.com/lxc/lxd/shared/api"
@@ -93,7 +93,7 @@ func createFromImage(d *Daemon, project string, req 
*api.InstancesPost) Response
                return BadRequest(fmt.Errorf("Must specify one of alias, 
fingerprint or properties for init from image"))
        }
 
-       dbType, err := instance.New(string(req.Type))
+       dbType, err := instanceDBTypes.New(string(req.Type))
        if err != nil {
                return BadRequest(err)
        }
@@ -155,7 +155,7 @@ func createFromImage(d *Daemon, project string, req 
*api.InstancesPost) Response
 }
 
 func createFromNone(d *Daemon, project string, req *api.InstancesPost) 
Response {
-       dbType, err := instance.New(string(req.Type))
+       dbType, err := instanceDBTypes.New(string(req.Type))
        if err != nil {
                return BadRequest(err)
        }
@@ -214,7 +214,7 @@ func createFromMigration(d *Daemon, project string, req 
*api.InstancesPost) Resp
                req.Profiles = []string{"default"}
        }
 
-       dbType, err := instance.New(string(req.Type))
+       dbType, err := instanceDBTypes.New(string(req.Type))
        if err != nil {
                return BadRequest(err)
        }
@@ -567,12 +567,12 @@ func createFromCopy(d *Daemon, project string, req 
*api.InstancesPost) Response
                }
        }
 
-       dbType, err := instance.New(string(req.Type))
+       dbType, err := instanceDBTypes.New(string(req.Type))
        if err != nil {
                return BadRequest(err)
        }
 
-       if dbType != instance.TypeAny && dbType != source.Type() {
+       if dbType != instanceDBTypes.TypeAny && dbType != source.Type() {
                return BadRequest(fmt.Errorf("Instance type should not be 
specified or should match source type"))
        }
 
diff --git a/lxd/db/containers.go b/lxd/db/containers.go
index 9bda7f6e3f..de77da3fc3 100644
--- a/lxd/db/containers.go
+++ b/lxd/db/containers.go
@@ -10,7 +10,7 @@ import (
        "github.com/lxc/lxd/lxd/db/query"
        "github.com/lxc/lxd/lxd/device/config"
        deviceConfig "github.com/lxc/lxd/lxd/device/config"
-       "github.com/lxc/lxd/lxd/instance"
+       instanceDBTypes "github.com/lxc/lxd/lxd/instance/types"
        "github.com/lxc/lxd/shared"
        "github.com/lxc/lxd/shared/api"
        "github.com/lxc/lxd/shared/logger"
@@ -70,7 +70,7 @@ type Instance struct {
        Project      string `db:"primary=yes&join=projects.name"`
        Name         string `db:"primary=yes"`
        Node         string `db:"join=nodes.name"`
-       Type         instance.Type
+       Type         instanceDBTypes.Type
        Snapshot     bool
        Architecture int
        Ephemeral    bool
@@ -89,7 +89,7 @@ type InstanceFilter struct {
        Project string
        Name    string
        Node    string
-       Type    instance.Type
+       Type    instanceDBTypes.Type
 }
 
 // ContainerToArgs is a convenience to convert the new Container db struct into
@@ -127,7 +127,7 @@ type ContainerArgs struct {
        // Don't set manually
        ID       int
        Node     string
-       Type     instance.Type
+       Type     instanceDBTypes.Type
        Snapshot bool
 
        // Creation only
@@ -168,14 +168,14 @@ SELECT instances.name FROM instances
   JOIN projects ON projects.id = instances.project_id
   WHERE projects.name = ? AND instances.type = ?
 `
-       return query.SelectStrings(c.tx, stmt, project, instance.TypeContainer)
+       return query.SelectStrings(c.tx, stmt, project, 
instanceDBTypes.TypeContainer)
 }
 
 // ContainerNodeAddress returns the address of the node hosting the container
 // with the given name in the given project.
 //
 // It returns the empty string if the container is hosted on this node.
-func (c *ClusterTx) ContainerNodeAddress(project string, name string, 
instanceType instance.Type) (string, error) {
+func (c *ClusterTx) ContainerNodeAddress(project string, name string, 
instanceType instanceDBTypes.Type) (string, error) {
        var stmt string
 
        args := make([]interface{}, 0, 4) // Expect up to 4 filters.
@@ -186,7 +186,7 @@ func (c *ClusterTx) ContainerNodeAddress(project string, 
name string, instanceTy
        args = append(args, project)
 
        // Instance type filter.
-       if instanceType != instance.TypeAny {
+       if instanceType != instanceDBTypes.TypeAny {
                filters.WriteString(" AND instances.type = ?")
                args = append(args, instanceType)
        }
@@ -264,7 +264,7 @@ SELECT nodes.id, nodes.address
 // string, to distinguish it from remote nodes.
 //
 // Containers whose node is down are addeded to the special address "0.0.0.0".
-func (c *ClusterTx) ContainersListByNodeAddress(project string, instanceType 
instance.Type) (map[string][]string, error) {
+func (c *ClusterTx) ContainersListByNodeAddress(project string, instanceType 
instanceDBTypes.Type) (map[string][]string, error) {
        offlineThreshold, err := c.NodeOfflineThreshold()
        if err != nil {
                return nil, err
@@ -278,7 +278,7 @@ func (c *ClusterTx) ContainersListByNodeAddress(project 
string, instanceType ins
        args = append(args, project)
 
        // Instance type filter.
-       if instanceType != instance.TypeAny {
+       if instanceType != instanceDBTypes.TypeAny {
                filters.WriteString(" AND instances.type = ?")
                args = append(args, instanceType)
        }
@@ -364,7 +364,7 @@ func (c *ClusterTx) ContainerListExpanded() ([]Instance, 
error) {
 
 // ContainersByNodeName returns a map associating each container to the name of
 // its node.
-func (c *ClusterTx) ContainersByNodeName(project string, instanceType 
instance.Type) (map[string]string, error) {
+func (c *ClusterTx) ContainersByNodeName(project string, instanceType 
instanceDBTypes.Type) (map[string]string, error) {
        args := make([]interface{}, 0, 2) // Expect up to 2 filters.
        var filters strings.Builder
 
@@ -373,7 +373,7 @@ func (c *ClusterTx) ContainersByNodeName(project string, 
instanceType instance.T
        args = append(args, project)
 
        // Instance type filter.
-       if instanceType != instance.TypeAny {
+       if instanceType != instanceDBTypes.TypeAny {
                filters.WriteString(" AND instances.type = ?")
                args = append(args, instanceType)
        }
@@ -532,14 +532,14 @@ func (c *ClusterTx) ContainerNodeList() ([]Instance, 
error) {
        }
        filter := InstanceFilter{
                Node: node,
-               Type: instance.TypeContainer,
+               Type: instanceDBTypes.TypeContainer,
        }
 
        return c.InstanceList(filter)
 }
 
 // ContainerNodeProjectList returns all container objects on the local node 
within the given project.
-func (c *ClusterTx) ContainerNodeProjectList(project string, instanceType 
instance.Type) ([]Instance, error) {
+func (c *ClusterTx) ContainerNodeProjectList(project string, instanceType 
instanceDBTypes.Type) ([]Instance, error) {
        node, err := c.NodeName()
        if err != nil {
                return nil, errors.Wrap(err, "Local node name")
@@ -839,7 +839,7 @@ func (c *Cluster) ContainerConfig(id int) 
(map[string]string, error) {
 // use it for new code.
 func (c *Cluster) LegacyContainersList() ([]string, error) {
        q := fmt.Sprintf("SELECT name FROM instances WHERE type=? ORDER BY 
name")
-       inargs := []interface{}{instance.TypeContainer}
+       inargs := []interface{}{instanceDBTypes.TypeContainer}
        var container string
        outfmt := []interface{}{container}
        result, err := queryScan(c.db, q, inargs, outfmt)
@@ -866,7 +866,7 @@ FROM instances_snapshots
 JOIN instances ON instances.id = instances_snapshots.instance_id
 WHERE type=? ORDER BY instances.name, instances_snapshots.name
 `)
-       inargs := []interface{}{instance.TypeContainer}
+       inargs := []interface{}{instanceDBTypes.TypeContainer}
        var container string
        var snapshot string
        outfmt := []interface{}{container, snapshot}
@@ -885,7 +885,7 @@ WHERE type=? ORDER BY instances.name, 
instances_snapshots.name
 
 // ContainersNodeList returns the names of all the containers of the given type
 // running on the local node.
-func (c *Cluster) ContainersNodeList(instanceType instance.Type) ([]string, 
error) {
+func (c *Cluster) ContainersNodeList(instanceType instanceDBTypes.Type) 
([]string, error) {
        q := fmt.Sprintf("SELECT name FROM instances WHERE type=? AND node_id=? 
ORDER BY name")
        inargs := []interface{}{instanceType, c.nodeID}
        var container string
diff --git a/lxd/db/containers_test.go b/lxd/db/containers_test.go
index ef829b9e37..49baa05bf6 100644
--- a/lxd/db/containers_test.go
+++ b/lxd/db/containers_test.go
@@ -8,7 +8,7 @@ import (
        "github.com/stretchr/testify/require"
 
        "github.com/lxc/lxd/lxd/db"
-       "github.com/lxc/lxd/lxd/instance"
+       instanceDBTypes "github.com/lxc/lxd/lxd/instance/types"
        "github.com/lxc/lxd/shared/api"
 )
 
@@ -32,7 +32,7 @@ func TestContainerList(t *testing.T) {
        addContainerDevice(t, tx, "c2", "eth0", "nic", nil)
        addContainerDevice(t, tx, "c3", "root", "disk", map[string]string{"x": 
"y"})
 
-       filter := db.InstanceFilter{Type: instance.TypeContainer}
+       filter := db.InstanceFilter{Type: instanceDBTypes.TypeContainer}
        containers, err := tx.InstanceList(filter)
        require.NoError(t, err)
        assert.Len(t, containers, 3)
@@ -74,7 +74,7 @@ func TestContainerList_FilterByNode(t *testing.T) {
        filter := db.InstanceFilter{
                Project: "default",
                Node:    "node2",
-               Type:    instance.TypeContainer,
+               Type:    instanceDBTypes.TypeContainer,
        }
 
        containers, err := tx.InstanceList(filter)
@@ -119,7 +119,7 @@ func 
TestInstanceList_ContainerWithSameNameInDifferentProjects(t *testing.T) {
                Project:      "blah",
                Name:         "c1",
                Node:         "none",
-               Type:         instance.TypeContainer,
+               Type:         instanceDBTypes.TypeContainer,
                Architecture: 1,
                Ephemeral:    false,
                Stateful:     true,
@@ -134,7 +134,7 @@ func 
TestInstanceList_ContainerWithSameNameInDifferentProjects(t *testing.T) {
                Project:      "test",
                Name:         "c1",
                Node:         "none",
-               Type:         instance.TypeContainer,
+               Type:         instanceDBTypes.TypeContainer,
                Architecture: 1,
                Ephemeral:    false,
                Stateful:     true,
@@ -173,7 +173,7 @@ func TestInstanceListExpanded(t *testing.T) {
                Project:      "default",
                Name:         "c1",
                Node:         "none",
-               Type:         instance.TypeContainer,
+               Type:         instanceDBTypes.TypeContainer,
                Architecture: 1,
                Ephemeral:    false,
                Stateful:     true,
@@ -313,7 +313,7 @@ func TestContainersListByNodeAddress(t *testing.T) {
        addContainer(t, tx, nodeID3, "c3")
        addContainer(t, tx, nodeID2, "c4")
 
-       result, err := tx.ContainersListByNodeAddress("default", 
instance.TypeContainer)
+       result, err := tx.ContainersListByNodeAddress("default", 
instanceDBTypes.TypeContainer)
        require.NoError(t, err)
        assert.Equal(
                t,
@@ -337,7 +337,7 @@ func TestContainersByNodeName(t *testing.T) {
        addContainer(t, tx, nodeID2, "c1")
        addContainer(t, tx, nodeID1, "c2")
 
-       result, err := tx.ContainersByNodeName("default", 
instance.TypeContainer)
+       result, err := tx.ContainersByNodeName("default", 
instanceDBTypes.TypeContainer)
        require.NoError(t, err)
        assert.Equal(
                t,
@@ -398,7 +398,7 @@ func TestContainersNodeList(t *testing.T) {
        })
        require.NoError(t, err)
 
-       names, err := cluster.ContainersNodeList(instance.TypeContainer)
+       names, err := cluster.ContainersNodeList(instanceTypess.TypeContainer)
        require.NoError(t, err)
        assert.Equal(t, names, []string{"c1"})
 }
@@ -450,7 +450,7 @@ func addContainer(t *testing.T, tx *db.ClusterTx, nodeID 
int64, name string) {
        stmt := `
 INSERT INTO instances(node_id, name, architecture, type, project_id) VALUES 
(?, ?, 1, ?, 1)
 `
-       _, err := tx.Tx().Exec(stmt, nodeID, name, instance.TypeContainer)
+       _, err := tx.Tx().Exec(stmt, nodeID, name, 
instanceDBTypes.TypeContainer)
        require.NoError(t, err)
 }
 
diff --git a/lxd/db/images.go b/lxd/db/images.go
index 294ec0a348..af5b911455 100644
--- a/lxd/db/images.go
+++ b/lxd/db/images.go
@@ -8,7 +8,7 @@ import (
        "github.com/pkg/errors"
 
        "github.com/lxc/lxd/lxd/db/query"
-       "github.com/lxc/lxd/lxd/instance"
+       instanceDBTypes "github.com/lxc/lxd/lxd/instance/types"
        "github.com/lxc/lxd/shared/api"
        "github.com/lxc/lxd/shared/osarch"
 )
@@ -157,10 +157,10 @@ func (c *Cluster) ImageSourceGet(imageID int) (int, 
api.ImageSource, error) {
 // cached image that matches the given remote details (server, protocol and
 // alias). Return the fingerprint linked to the matching entry, if any.
 func (c *Cluster) ImageSourceGetCachedFingerprint(server string, protocol 
string, alias string, typeName string) (string, error) {
-       imageType := instance.TypeAny
+       imageType := instanceDBTypes.TypeAny
        if typeName != "" {
                var err error
-               imageType, err = instance.New(typeName)
+               imageType, err = instanceDBTypes.New(typeName)
                if err != nil {
                        return "", err
                }
@@ -431,7 +431,7 @@ func (c *Cluster) imageFill(id int, image *api.Image, 
create, expire, used, uplo
        }
 
        image.Architecture, _ = osarch.ArchitectureName(arch)
-       image.Type = instance.Type(imageType).String()
+       image.Type = instanceDBTypes.Type(imageType).String()
 
        // The upload date is enforced by NOT NULL in the schema, so it can 
never be nil.
        image.UploadedAt = *upload
@@ -647,7 +647,7 @@ func (c *Cluster) ImageAliasGet(project, name string, 
isTrustedClient bool) (int
        entry.Name = name
        entry.Target = fingerprint
        entry.Description = description
-       entry.Type = instance.Type(imageType).String()
+       entry.Type = instanceDBTypes.Type(imageType).String()
 
        return id, entry, nil
 }
@@ -807,10 +807,10 @@ func (c *Cluster) ImageInsert(project, fp string, fname 
string, sz int64, public
                arch = 0
        }
 
-       imageType := instance.TypeAny
+       imageType := instanceDBTypes.TypeAny
        if typeName != "" {
                var err error
-               imageType, err = instance.New(typeName)
+               imageType, err = instanceDBTypes.New(typeName)
                if err != nil {
                        return err
                }
diff --git a/lxd/db/instances.mapper.go b/lxd/db/instances.mapper.go
index 74389ef9e7..8fb29c96c8 100644
--- a/lxd/db/instances.mapper.go
+++ b/lxd/db/instances.mapper.go
@@ -10,7 +10,7 @@ import (
 
        "github.com/lxc/lxd/lxd/db/cluster"
        "github.com/lxc/lxd/lxd/db/query"
-       "github.com/lxc/lxd/lxd/instance"
+       instanceDBTypes "github.com/lxc/lxd/lxd/instance/types"
        "github.com/lxc/lxd/shared/api"
 )
 
@@ -166,7 +166,7 @@ func (c *ClusterTx) InstanceList(filter InstanceFilter) 
([]Instance, error) {
        if filter.Node != "" {
                criteria["Node"] = filter.Node
        }
-       if filter.Type != instance.TypeAny {
+       if filter.Type != instanceDBTypes.TypeAny {
                criteria["Type"] = filter.Type
        }
 
diff --git a/lxd/db/snapshots_test.go b/lxd/db/snapshots_test.go
index 0ef5121170..6c34db19cd 100644
--- a/lxd/db/snapshots_test.go
+++ b/lxd/db/snapshots_test.go
@@ -8,7 +8,7 @@ import (
        "github.com/stretchr/testify/require"
 
        "github.com/lxc/lxd/lxd/db"
-       "github.com/lxc/lxd/lxd/instance"
+       instanceDBTypes "github.com/lxc/lxd/lxd/instance/types"
        "github.com/lxc/lxd/shared/api"
 )
 
@@ -97,7 +97,7 @@ func TestInstanceSnapshotList_SameNameInDifferentProjects(t 
*testing.T) {
                Project:      "default",
                Name:         "i1",
                Node:         "none",
-               Type:         instance.TypeContainer,
+               Type:         instanceDBTypes.TypeContainer,
                Architecture: 1,
                Ephemeral:    false,
                Stateful:     true,
@@ -110,7 +110,7 @@ func TestInstanceSnapshotList_SameNameInDifferentProjects(t 
*testing.T) {
                Project:      "p1",
                Name:         "i1",
                Node:         "none",
-               Type:         instance.TypeContainer,
+               Type:         instanceDBTypes.TypeContainer,
                Architecture: 1,
                Ephemeral:    false,
                Stateful:     true,
diff --git a/lxd/device/device_instance_id.go b/lxd/device/device_instance_id.go
index c92bb6ae95..7f83824b1f 100644
--- a/lxd/device/device_instance_id.go
+++ b/lxd/device/device_instance_id.go
@@ -2,7 +2,7 @@ package device
 
 import (
        "github.com/lxc/lxd/lxd/device/config"
-       "github.com/lxc/lxd/lxd/instance"
+       instanceDBTypes "github.com/lxc/lxd/lxd/instance/types"
 )
 
 // InstanceIdentifier is an interface that allows us to identify an Instance 
and its properties.
@@ -10,7 +10,7 @@ import (
 // independent of when they're called in the instance lifecycle.
 type InstanceIdentifier interface {
        Name() string
-       Type() instance.Type
+       Type() instanceDBTypes.Type
        Project() string
        DevicesPath() string
        RootfsPath() string
diff --git a/lxd/device/disk.go b/lxd/device/disk.go
index a695d0a0c4..92c455cba0 100644
--- a/lxd/device/disk.go
+++ b/lxd/device/disk.go
@@ -14,7 +14,7 @@ import (
 
        "github.com/lxc/lxd/lxd/db"
        "github.com/lxc/lxd/lxd/device/config"
-       "github.com/lxc/lxd/lxd/instance"
+       instanceDBTypes "github.com/lxc/lxd/lxd/instance/types"
        "github.com/lxc/lxd/lxd/util"
        "github.com/lxc/lxd/shared"
        "github.com/lxc/lxd/shared/logger"
@@ -44,7 +44,7 @@ func (d *disk) isRequired() bool {
 
 // validateConfig checks the supplied config for correctness.
 func (d *disk) validateConfig() error {
-       if d.instance.Type() != instance.TypeContainer {
+       if d.instance.Type() != instanceDBTypes.TypeContainer {
                return ErrUnsupportedDevType
        }
 
diff --git a/lxd/device/gpu.go b/lxd/device/gpu.go
index fdcfa69846..2b8142ee8e 100644
--- a/lxd/device/gpu.go
+++ b/lxd/device/gpu.go
@@ -11,7 +11,7 @@ import (
 
        "golang.org/x/sys/unix"
 
-       "github.com/lxc/lxd/lxd/instance"
+       instanceDBTypes "github.com/lxc/lxd/lxd/instance/types"
        "github.com/lxc/lxd/lxd/resources"
        "github.com/lxc/lxd/shared"
 )
@@ -31,7 +31,7 @@ type gpu struct {
 
 // validateConfig checks the supplied config for correctness.
 func (d *gpu) validateConfig() error {
-       if d.instance.Type() != instance.TypeContainer {
+       if d.instance.Type() != instanceDBTypes.TypeContainer {
                return ErrUnsupportedDevType
        }
 
diff --git a/lxd/device/infiniband_physical.go 
b/lxd/device/infiniband_physical.go
index 9c181be6e8..0592a460b3 100644
--- a/lxd/device/infiniband_physical.go
+++ b/lxd/device/infiniband_physical.go
@@ -3,7 +3,7 @@ package device
 import (
        "fmt"
 
-       "github.com/lxc/lxd/lxd/instance"
+       instanceDBTypes "github.com/lxc/lxd/lxd/instance/types"
        "github.com/lxc/lxd/lxd/resources"
        "github.com/lxc/lxd/shared"
 )
@@ -14,7 +14,7 @@ type infinibandPhysical struct {
 
 // validateConfig checks the supplied config for correctness.
 func (d *infinibandPhysical) validateConfig() error {
-       if d.instance.Type() != instance.TypeContainer {
+       if d.instance.Type() != instanceDBTypes.TypeContainer {
                return ErrUnsupportedDevType
        }
 
diff --git a/lxd/device/infiniband_sriov.go b/lxd/device/infiniband_sriov.go
index 6d96b0c4aa..d531e64d58 100644
--- a/lxd/device/infiniband_sriov.go
+++ b/lxd/device/infiniband_sriov.go
@@ -3,7 +3,7 @@ package device
 import (
        "fmt"
 
-       "github.com/lxc/lxd/lxd/instance"
+       instanceDBTypes "github.com/lxc/lxd/lxd/instance/types"
        "github.com/lxc/lxd/lxd/resources"
        "github.com/lxc/lxd/shared"
        "github.com/lxc/lxd/shared/api"
@@ -15,7 +15,7 @@ type infinibandSRIOV struct {
 
 // validateConfig checks the supplied config for correctness.
 func (d *infinibandSRIOV) validateConfig() error {
-       if d.instance.Type() != instance.TypeContainer {
+       if d.instance.Type() != instanceDBTypes.TypeContainer {
                return ErrUnsupportedDevType
        }
 
diff --git a/lxd/device/nic_bridged.go b/lxd/device/nic_bridged.go
index f1e834d263..6a3620516e 100644
--- a/lxd/device/nic_bridged.go
+++ b/lxd/device/nic_bridged.go
@@ -21,7 +21,7 @@ import (
 
        "github.com/lxc/lxd/lxd/device/config"
        "github.com/lxc/lxd/lxd/dnsmasq"
-       "github.com/lxc/lxd/lxd/instance"
+       instanceDBTypes "github.com/lxc/lxd/lxd/instance/types"
        "github.com/lxc/lxd/lxd/iptables"
        "github.com/lxc/lxd/shared"
        "github.com/lxc/lxd/shared/logger"
@@ -47,7 +47,7 @@ type nicBridged struct {
 
 // validateConfig checks the supplied config for correctness.
 func (d *nicBridged) validateConfig() error {
-       if d.instance.Type() != instance.TypeContainer {
+       if d.instance.Type() != instanceDBTypes.TypeContainer {
                return ErrUnsupportedDevType
        }
 
diff --git a/lxd/device/nic_ipvlan.go b/lxd/device/nic_ipvlan.go
index 66b547c12b..74098696da 100644
--- a/lxd/device/nic_ipvlan.go
+++ b/lxd/device/nic_ipvlan.go
@@ -4,7 +4,7 @@ import (
        "fmt"
        "strings"
 
-       "github.com/lxc/lxd/lxd/instance"
+       instanceDBTypes "github.com/lxc/lxd/lxd/instance/types"
        "github.com/lxc/lxd/shared"
 )
 
@@ -18,7 +18,7 @@ func (d *nicIPVLAN) CanHotPlug() (bool, []string) {
 
 // validateConfig checks the supplied config for correctness.
 func (d *nicIPVLAN) validateConfig() error {
-       if d.instance.Type() != instance.TypeContainer {
+       if d.instance.Type() != instanceDBTypes.TypeContainer {
                return ErrUnsupportedDevType
        }
 
diff --git a/lxd/device/nic_macvlan.go b/lxd/device/nic_macvlan.go
index 60f731f52e..9b890f3fd8 100644
--- a/lxd/device/nic_macvlan.go
+++ b/lxd/device/nic_macvlan.go
@@ -3,7 +3,7 @@ package device
 import (
        "fmt"
 
-       "github.com/lxc/lxd/lxd/instance"
+       instanceDBTypes "github.com/lxc/lxd/lxd/instance/types"
        "github.com/lxc/lxd/shared"
 )
 
@@ -13,7 +13,7 @@ type nicMACVLAN struct {
 
 // validateConfig checks the supplied config for correctness.
 func (d *nicMACVLAN) validateConfig() error {
-       if d.instance.Type() != instance.TypeContainer {
+       if d.instance.Type() != instanceDBTypes.TypeContainer {
                return ErrUnsupportedDevType
        }
 
diff --git a/lxd/device/nic_p2p.go b/lxd/device/nic_p2p.go
index 35b7d7e815..8421e436af 100644
--- a/lxd/device/nic_p2p.go
+++ b/lxd/device/nic_p2p.go
@@ -4,7 +4,7 @@ import (
        "fmt"
 
        "github.com/lxc/lxd/lxd/device/config"
-       "github.com/lxc/lxd/lxd/instance"
+       instanceDBTypes "github.com/lxc/lxd/lxd/instance/types"
        "github.com/lxc/lxd/shared"
 )
 
@@ -14,7 +14,7 @@ type nicP2P struct {
 
 // validateConfig checks the supplied config for correctness.
 func (d *nicP2P) validateConfig() error {
-       if d.instance.Type() != instance.TypeContainer {
+       if d.instance.Type() != instanceDBTypes.TypeContainer {
                return ErrUnsupportedDevType
        }
 
diff --git a/lxd/device/nic_physical.go b/lxd/device/nic_physical.go
index 41e8ce4b90..fd4f67c66c 100644
--- a/lxd/device/nic_physical.go
+++ b/lxd/device/nic_physical.go
@@ -3,7 +3,7 @@ package device
 import (
        "fmt"
 
-       "github.com/lxc/lxd/lxd/instance"
+       instanceDBTypes "github.com/lxc/lxd/lxd/instance/types"
        "github.com/lxc/lxd/shared"
 )
 
@@ -13,7 +13,7 @@ type nicPhysical struct {
 
 // validateConfig checks the supplied config for correctness.
 func (d *nicPhysical) validateConfig() error {
-       if d.instance.Type() != instance.TypeContainer {
+       if d.instance.Type() != instanceDBTypes.TypeContainer {
                return ErrUnsupportedDevType
        }
 
diff --git a/lxd/device/nic_sriov.go b/lxd/device/nic_sriov.go
index c63401acfa..213e451f0f 100644
--- a/lxd/device/nic_sriov.go
+++ b/lxd/device/nic_sriov.go
@@ -13,7 +13,7 @@ import (
        "strings"
        "time"
 
-       "github.com/lxc/lxd/lxd/instance"
+       instanceDBTypes "github.com/lxc/lxd/lxd/instance/types"
        "github.com/lxc/lxd/shared"
 )
 
@@ -23,7 +23,7 @@ type nicSRIOV struct {
 
 // validateConfig checks the supplied config for correctness.
 func (d *nicSRIOV) validateConfig() error {
-       if d.instance.Type() != instance.TypeContainer {
+       if d.instance.Type() != instanceDBTypes.TypeContainer {
                return ErrUnsupportedDevType
        }
 
diff --git a/lxd/device/proxy.go b/lxd/device/proxy.go
index 2efd0f9b09..854fc5672c 100644
--- a/lxd/device/proxy.go
+++ b/lxd/device/proxy.go
@@ -15,7 +15,7 @@ import (
        "golang.org/x/sys/unix"
        "gopkg.in/lxc/go-lxc.v2"
 
-       "github.com/lxc/lxd/lxd/instance"
+       instanceDBTypes "github.com/lxc/lxd/lxd/instance/types"
        "github.com/lxc/lxd/lxd/iptables"
        "github.com/lxc/lxd/lxd/project"
        "github.com/lxc/lxd/shared"
@@ -40,7 +40,7 @@ type proxyProcInfo struct {
 
 // validateConfig checks the supplied config for correctness.
 func (d *proxy) validateConfig() error {
-       if d.instance.Type() != instance.TypeContainer {
+       if d.instance.Type() != instanceDBTypes.TypeContainer {
                return ErrUnsupportedDevType
        }
 
diff --git a/lxd/device/unix_common.go b/lxd/device/unix_common.go
index 09ae89dcdf..16c9dbfdfc 100644
--- a/lxd/device/unix_common.go
+++ b/lxd/device/unix_common.go
@@ -6,7 +6,7 @@ import (
        "strings"
 
        "github.com/lxc/lxd/lxd/device/config"
-       "github.com/lxc/lxd/lxd/instance"
+       instanceDBTypes "github.com/lxc/lxd/lxd/instance/types"
        "github.com/lxc/lxd/shared"
 )
 
@@ -39,7 +39,7 @@ func (d *unixCommon) isRequired() bool {
 
 // validateConfig checks the supplied config for correctness.
 func (d *unixCommon) validateConfig() error {
-       if d.instance.Type() != instance.TypeContainer {
+       if d.instance.Type() != instanceDBTypes.TypeContainer {
                return ErrUnsupportedDevType
        }
 
diff --git a/lxd/device/usb.go b/lxd/device/usb.go
index 4a1ad538f5..fe906190b7 100644
--- a/lxd/device/usb.go
+++ b/lxd/device/usb.go
@@ -8,7 +8,7 @@ import (
        "strings"
 
        "github.com/lxc/lxd/lxd/device/config"
-       "github.com/lxc/lxd/lxd/instance"
+       instanceDBTypes "github.com/lxc/lxd/lxd/instance/types"
        "github.com/lxc/lxd/shared"
 )
 
@@ -43,7 +43,7 @@ func (d *usb) isRequired() bool {
 
 // validateConfig checks the supplied config for correctness.
 func (d *usb) validateConfig() error {
-       if d.instance.Type() != instance.TypeContainer {
+       if d.instance.Type() != instanceDBTypes.TypeContainer {
                return ErrUnsupportedDevType
        }
 
diff --git a/lxd/images.go b/lxd/images.go
index e15cefbfb6..8525e09f33 100644
--- a/lxd/images.go
+++ b/lxd/images.go
@@ -28,7 +28,7 @@ import (
        lxd "github.com/lxc/lxd/client"
        "github.com/lxc/lxd/lxd/cluster"
        "github.com/lxc/lxd/lxd/db"
-       "github.com/lxc/lxd/lxd/instance"
+       instanceDBTypes "github.com/lxc/lxd/lxd/instance/types"
        "github.com/lxc/lxd/lxd/node"
        "github.com/lxc/lxd/lxd/state"
        "github.com/lxc/lxd/lxd/task"
@@ -475,9 +475,9 @@ func getImgPostInfo(d *Daemon, r *http.Request, builddir 
string, project string,
                }
 
                if part.FormName() == "rootfs" {
-                       info.Type = instance.TypeContainer.String()
+                       info.Type = instanceDBTypes.TypeContainer.String()
                } else if part.FormName() == "rootfs.img" {
-                       info.Type = instance.TypeVM.String()
+                       info.Type = instanceDBTypes.TypeVM.String()
                } else {
                        logger.Error("Invalid multipart image")
                        return nil, fmt.Errorf("Invalid multipart image")
@@ -865,12 +865,12 @@ func getImageMetadata(fname string) (*api.ImageMetadata, 
string, error) {
 
                if strings.HasPrefix(hdr.Name, "rootfs/") || 
strings.HasPrefix(hdr.Name, "./rootfs/") {
                        hasRoot = true
-                       imageType = instance.TypeContainer.String()
+                       imageType = instanceDBTypes.TypeContainer.String()
                }
 
                if hdr.Name == "rootfs.img" || hdr.Name == "./rootfs.img" {
                        hasRoot = true
-                       imageType = instance.TypeVM.String()
+                       imageType = instanceDBTypes.TypeVM.String()
                }
 
                if hasMeta && hasRoot {
diff --git a/lxd/instance/instance.go b/lxd/instance/types/instance_types.go
similarity index 100%
rename from lxd/instance/instance.go
rename to lxd/instance/types/instance_types.go
diff --git a/lxd/logging.go b/lxd/logging.go
index 162ad51a3d..c8ea74d407 100644
--- a/lxd/logging.go
+++ b/lxd/logging.go
@@ -7,7 +7,7 @@ import (
        "time"
 
        "github.com/lxc/lxd/lxd/db"
-       "github.com/lxc/lxd/lxd/instance"
+       instanceDBTypes "github.com/lxc/lxd/lxd/instance/types"
        "github.com/lxc/lxd/lxd/state"
        "github.com/lxc/lxd/lxd/task"
        "github.com/lxc/lxd/shared"
@@ -53,7 +53,7 @@ func expireLogs(ctx context.Context, state *state.State) 
error {
        var containers []string
        ch := make(chan struct{})
        go func() {
-               containers, err = 
state.Cluster.ContainersNodeList(instance.TypeContainer)
+               containers, err = 
state.Cluster.ContainersNodeList(instanceDBTypes.TypeContainer)
                ch <- struct{}{}
        }()
        select {
diff --git a/lxd/main_activateifneeded.go b/lxd/main_activateifneeded.go
index 16196ef827..4220577e21 100644
--- a/lxd/main_activateifneeded.go
+++ b/lxd/main_activateifneeded.go
@@ -10,7 +10,7 @@ import (
 
        lxd "github.com/lxc/lxd/client"
        "github.com/lxc/lxd/lxd/db"
-       "github.com/lxc/lxd/lxd/instance"
+       instanceDBTypes "github.com/lxc/lxd/lxd/instance/types"
        "github.com/lxc/lxd/lxd/node"
        "github.com/lxc/lxd/shared"
        "github.com/lxc/lxd/shared/idmap"
@@ -112,7 +112,7 @@ func (c *cmdActivateifneeded) Run(cmd *cobra.Command, args 
[]string) error {
 
        var containers []db.Instance
        err = d.cluster.Transaction(func(tx *db.ClusterTx) error {
-               filter := db.InstanceFilter{Type: instance.TypeContainer}
+               filter := db.InstanceFilter{Type: instanceDBTypes.TypeContainer}
                var err error
                containers, err = tx.InstanceList(filter)
                return err
diff --git a/lxd/response.go b/lxd/response.go
index 7bca1b4e17..deb24c7101 100644
--- a/lxd/response.go
+++ b/lxd/response.go
@@ -18,7 +18,7 @@ import (
        lxd "github.com/lxc/lxd/client"
        "github.com/lxc/lxd/lxd/cluster"
        "github.com/lxc/lxd/lxd/db"
-       "github.com/lxc/lxd/lxd/instance"
+       instanceDBTypes "github.com/lxc/lxd/lxd/instance/types"
        "github.com/lxc/lxd/lxd/util"
        "github.com/lxc/lxd/shared"
        "github.com/lxc/lxd/shared/api"
@@ -192,7 +192,7 @@ func ForwardedResponseIfTargetIsRemote(d *Daemon, request 
*http.Request) Respons
 // ForwardedResponseIfContainerIsRemote redirects a request to the node running
 // the container with the given name. If the container is local, nothing gets
 // done and nil is returned.
-func ForwardedResponseIfContainerIsRemote(d *Daemon, r *http.Request, project, 
name string, instanceType instance.Type) (Response, error) {
+func ForwardedResponseIfContainerIsRemote(d *Daemon, r *http.Request, project, 
name string, instanceType instanceDBTypes.Type) (Response, error) {
        cert := d.endpoints.NetworkCert()
        client, err := cluster.ConnectIfContainerIsRemote(d.cluster, project, 
name, cert, instanceType)
        if err != nil {
diff --git a/lxd/storage_lvm_utils.go b/lxd/storage_lvm_utils.go
index 7ea61f13f2..aab5504a90 100644
--- a/lxd/storage_lvm_utils.go
+++ b/lxd/storage_lvm_utils.go
@@ -11,7 +11,7 @@ import (
        "github.com/pkg/errors"
 
        "github.com/lxc/lxd/lxd/db"
-       "github.com/lxc/lxd/lxd/instance"
+       instanceDBTypes "github.com/lxc/lxd/lxd/instance/types"
        "github.com/lxc/lxd/lxd/project"
        "github.com/lxc/lxd/lxd/state"
        driver "github.com/lxc/lxd/lxd/storage"
@@ -722,7 +722,7 @@ func storageLVMThinpoolExists(vgName string, poolName 
string) (bool, error) {
 func storageLVMGetThinPoolUsers(s *state.State) ([]string, error) {
        results := []string{}
 
-       cNames, err := s.Cluster.ContainersNodeList(instance.TypeContainer)
+       cNames, err := 
s.Cluster.ContainersNodeList(instanceDBTypes.TypeContainer)
        if err != nil {
                return results, err
        }
diff --git a/lxd/storage_migration.go b/lxd/storage_migration.go
index 218458d118..fcb5d8a143 100644
--- a/lxd/storage_migration.go
+++ b/lxd/storage_migration.go
@@ -8,7 +8,7 @@ import (
 
        "github.com/lxc/lxd/lxd/db"
        deviceConfig "github.com/lxc/lxd/lxd/device/config"
-       "github.com/lxc/lxd/lxd/instance"
+       instanceDBTypes "github.com/lxc/lxd/lxd/instance/types"
        "github.com/lxc/lxd/lxd/migration"
        "github.com/lxc/lxd/lxd/project"
        driver "github.com/lxc/lxd/lxd/storage"
@@ -199,7 +199,7 @@ func snapshotProtobufToContainerArgs(project string, 
containerName string, snap
        args := db.ContainerArgs{
                Architecture: int(snap.GetArchitecture()),
                Config:       config,
-               Type:         instance.TypeContainer,
+               Type:         instanceDBTypes.TypeContainer,
                Snapshot:     true,
                Devices:      devices,
                Ephemeral:    snap.GetEphemeral(),
_______________________________________________
lxc-devel mailing list
lxc-devel@lists.linuxcontainers.org
http://lists.linuxcontainers.org/listinfo/lxc-devel

Reply via email to