Skip to content

Commit 15af91a

Browse files
authored
Merge pull request #1831 from stgraber/main
Various fixes from address set PR
2 parents 48b0feb + be3bdc1 commit 15af91a

File tree

5 files changed

+62
-35
lines changed

5 files changed

+62
-35
lines changed

cmd/incusd/daemon.go

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -2029,7 +2029,7 @@ func (d *Daemon) setupOpenFGA(apiURL string, apiToken string, storeID string) er
20292029
var resources auth.Resources
20302030

20312031
err = d.db.Cluster.Transaction(d.shutdownCtx, func(ctx context.Context, tx *db.ClusterTx) error {
2032-
err := query.Scan(ctx, tx.Tx(), "SELECT certificates.fingerprint from certificates", func(scan func(dest ...any) error) error {
2032+
err := query.Scan(ctx, tx.Tx(), "SELECT certificates.fingerprint FROM certificates", func(scan func(dest ...any) error) error {
20332033
var fingerprint string
20342034
err := scan(&fingerprint)
20352035
if err != nil {
@@ -2043,7 +2043,7 @@ func (d *Daemon) setupOpenFGA(apiURL string, apiToken string, storeID string) er
20432043
return err
20442044
}
20452045

2046-
err = query.Scan(ctx, tx.Tx(), "SELECT name from storage_pools", func(scan func(dest ...any) error) error {
2046+
err = query.Scan(ctx, tx.Tx(), "SELECT name FROM storage_pools", func(scan func(dest ...any) error) error {
20472047
var storagePoolName string
20482048
err := scan(&storagePoolName)
20492049
if err != nil {
@@ -2057,7 +2057,7 @@ func (d *Daemon) setupOpenFGA(apiURL string, apiToken string, storeID string) er
20572057
return err
20582058
}
20592059

2060-
err = query.Scan(ctx, tx.Tx(), "SELECT name from projects", func(scan func(dest ...any) error) error {
2060+
err = query.Scan(ctx, tx.Tx(), "SELECT name FROM projects", func(scan func(dest ...any) error) error {
20612061
var projectName string
20622062
err := scan(&projectName)
20632063
if err != nil {
@@ -2071,7 +2071,7 @@ func (d *Daemon) setupOpenFGA(apiURL string, apiToken string, storeID string) er
20712071
return err
20722072
}
20732073

2074-
err = query.Scan(ctx, tx.Tx(), "SELECT images.fingerprint, projects.name from images JOIN projects ON projects.id=images.project_id", func(scan func(dest ...any) error) error {
2074+
err = query.Scan(ctx, tx.Tx(), "SELECT images.fingerprint, projects.name FROM images JOIN projects ON projects.id=images.project_id", func(scan func(dest ...any) error) error {
20752075
var imageFingerprint string
20762076
var projectName string
20772077
err := scan(&imageFingerprint, &projectName)
@@ -2086,7 +2086,7 @@ func (d *Daemon) setupOpenFGA(apiURL string, apiToken string, storeID string) er
20862086
return err
20872087
}
20882088

2089-
err = query.Scan(ctx, tx.Tx(), "SELECT images_aliases.name, projects.name from images_aliases JOIN projects ON projects.id=images_aliases.project_id", func(scan func(dest ...any) error) error {
2089+
err = query.Scan(ctx, tx.Tx(), "SELECT images_aliases.name, projects.name FROM images_aliases JOIN projects ON projects.id=images_aliases.project_id", func(scan func(dest ...any) error) error {
20902090
var imageAliasName string
20912091
var projectName string
20922092
err := scan(&imageAliasName, &projectName)
@@ -2101,7 +2101,7 @@ func (d *Daemon) setupOpenFGA(apiURL string, apiToken string, storeID string) er
21012101
return err
21022102
}
21032103

2104-
err = query.Scan(ctx, tx.Tx(), "SELECT instances.name, projects.name from instances JOIN projects ON projects.id=instances.project_id", func(scan func(dest ...any) error) error {
2104+
err = query.Scan(ctx, tx.Tx(), "SELECT instances.name, projects.name FROM instances JOIN projects ON projects.id=instances.project_id", func(scan func(dest ...any) error) error {
21052105
var instanceName string
21062106
var projectName string
21072107
err := scan(&instanceName, &projectName)

doc/howto/network_integrations.md

Lines changed: 11 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -47,7 +47,17 @@ This is done through `incus network peer create`, for example:
4747
incus network peer create default region ovn-region --type=remote
4848
```
4949

50-
## Configuration options
50+
## Integration properties
51+
52+
Address sets have the following properties:
53+
54+
Property | Type | Required | Description
55+
:-- | :-- | :-- | :--
56+
`name` | string | yes | Name of the network integration
57+
`description` | string | no | Description of the network integration
58+
`type` | string | yes | Type of network integration (currently only `ovn`)
59+
60+
## Integration configuration options
5161

5262
The following configuration options are available for all network integrations:
5363

internal/server/auth/authorization.go

Lines changed: 13 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -111,18 +111,19 @@ type Opts struct {
111111

112112
// Resources represents a set of current API resources as Object slices for use when loading an Authorizer.
113113
type Resources struct {
114-
CertificateObjects []Object
115-
StoragePoolObjects []Object
116-
ProjectObjects []Object
117-
ImageObjects []Object
118-
ImageAliasObjects []Object
119-
InstanceObjects []Object
120-
NetworkObjects []Object
121-
NetworkACLObjects []Object
122-
NetworkZoneObjects []Object
123-
ProfileObjects []Object
124-
StoragePoolVolumeObjects []Object
125-
StorageBucketObjects []Object
114+
CertificateObjects []Object
115+
StoragePoolObjects []Object
116+
ProjectObjects []Object
117+
ImageObjects []Object
118+
ImageAliasObjects []Object
119+
InstanceObjects []Object
120+
NetworkObjects []Object
121+
NetworkACLObjects []Object
122+
NetworkIntegrationObjects []Object
123+
NetworkZoneObjects []Object
124+
ProfileObjects []Object
125+
StoragePoolVolumeObjects []Object
126+
StorageBucketObjects []Object
126127
}
127128

128129
// WithConfig can be passed into LoadAuthorizer to pass in driver specific configuration.

internal/server/auth/driver_openfga.go

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1042,6 +1042,22 @@ func (f *FGA) syncResources(ctx context.Context, resources Resources) error {
10421042
return err
10431043
}
10441044

1045+
// List the network integrations we have added to OpenFGA already.
1046+
networkIntegrationsResp, err := f.client.ListObjects(ctx).Body(client.ClientListObjectsRequest{
1047+
User: ObjectServer().String(),
1048+
Relation: relationServer,
1049+
Type: string(ObjectTypeNetworkIntegration),
1050+
}).Execute()
1051+
if err != nil {
1052+
return err
1053+
}
1054+
1055+
// Compare with local network integrations.
1056+
err = diffObjects(relationServer, networkIntegrationsResp.GetObjects(), resources.NetworkIntegrationObjects)
1057+
if err != nil {
1058+
return err
1059+
}
1060+
10451061
// List the storage pools we have added to OpenFGA already.
10461062
storagePoolsResp, err := f.client.ListObjects(ctx).Body(client.ClientListObjectsRequest{
10471063
User: ObjectServer().String(),

internal/server/db/cluster/entities.go

Lines changed: 16 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -33,51 +33,51 @@ const (
3333

3434
// EntityNames associates an entity code to its name.
3535
var EntityNames = map[int]string{
36+
TypeCertificate: "certificate",
37+
TypeClusterGroup: "cluster group",
3638
TypeContainer: "container",
3739
TypeImage: "image",
38-
TypeProfile: "profile",
39-
TypeProject: "project",
40-
TypeCertificate: "certificate",
41-
TypeInstance: "instance",
4240
TypeInstanceBackup: "instance backup",
41+
TypeInstance: "instance",
4342
TypeInstanceSnapshot: "instance snapshot",
44-
TypeNetwork: "network",
4543
TypeNetworkACL: "network acl",
44+
TypeNetwork: "network",
4645
TypeNode: "node",
4746
TypeOperation: "operation",
47+
TypeProfile: "profile",
48+
TypeProject: "project",
49+
TypeStorageBucket: "storage bucket",
4850
TypeStoragePool: "storage pool",
49-
TypeStorageVolume: "storage volume",
5051
TypeStorageVolumeBackup: "storage volume backup",
5152
TypeStorageVolumeSnapshot: "storage volume snapshot",
52-
TypeStorageBucket: "storage bucket",
53+
TypeStorageVolume: "storage volume",
5354
TypeWarning: "warning",
54-
TypeClusterGroup: "cluster group",
5555
}
5656

5757
// EntityTypes associates an entity name to its type code.
5858
var EntityTypes = map[string]int{}
5959

6060
// EntityURIs associates an entity code to its URI pattern.
6161
var EntityURIs = map[int]string{
62+
TypeCertificate: "/" + version.APIVersion + "/certificates/%s",
63+
TypeClusterGroup: "/" + version.APIVersion + "/cluster/groups/%s",
6264
TypeContainer: "/" + version.APIVersion + "/containers/%s?project=%s",
6365
TypeImage: "/" + version.APIVersion + "/images/%s?project=%s",
64-
TypeProfile: "/" + version.APIVersion + "/profiles/%s?project=%s",
65-
TypeProject: "/" + version.APIVersion + "/projects/%s",
66-
TypeCertificate: "/" + version.APIVersion + "/certificates/%s",
67-
TypeInstance: "/" + version.APIVersion + "/instances/%s?project=%s",
6866
TypeInstanceBackup: "/" + version.APIVersion + "/instances/%s/backups/%s?project=%s",
6967
TypeInstanceSnapshot: "/" + version.APIVersion + "/instances/%s/snapshots/%s?project=%s",
70-
TypeNetwork: "/" + version.APIVersion + "/networks/%s?project=%s",
68+
TypeInstance: "/" + version.APIVersion + "/instances/%s?project=%s",
7169
TypeNetworkACL: "/" + version.APIVersion + "/network-acls/%s?project=%s",
70+
TypeNetwork: "/" + version.APIVersion + "/networks/%s?project=%s",
7271
TypeNode: "/" + version.APIVersion + "/cluster/members/%s",
7372
TypeOperation: "/" + version.APIVersion + "/operations/%s",
73+
TypeProfile: "/" + version.APIVersion + "/profiles/%s?project=%s",
74+
TypeProject: "/" + version.APIVersion + "/projects/%s",
75+
TypeStorageBucket: "/" + version.APIVersion + "/storage-pools/%s/buckets/%s?project=%s",
7476
TypeStoragePool: "/" + version.APIVersion + "/storage-pools/%s",
75-
TypeStorageVolume: "/" + version.APIVersion + "/storage-pools/%s/volumes/%s/%s?project=%s",
7677
TypeStorageVolumeBackup: "/" + version.APIVersion + "/storage-pools/%s/volumes/%s/%s/backups/%s?project=%s",
7778
TypeStorageVolumeSnapshot: "/" + version.APIVersion + "/storage-pools/%s/volumes/%s/%s/snapshots/%s?project=%s",
78-
TypeStorageBucket: "/" + version.APIVersion + "/storage-pools/%s/buckets/%s?project=%s",
79+
TypeStorageVolume: "/" + version.APIVersion + "/storage-pools/%s/volumes/%s/%s?project=%s",
7980
TypeWarning: "/" + version.APIVersion + "/warnings/%s",
80-
TypeClusterGroup: "/" + version.APIVersion + "/cluster/groups/%s",
8181
}
8282

8383
func init() {

0 commit comments

Comments
 (0)