Added a new Endpoint struct at the top level host package level to capture host, set, and address chosen. Temporarily add a host_plugin_host table to capture the hosts returned by the plugins. This ensures the datawarehouse is able to query the table to decide what host was chosen. The view used to update the datawarehouse dimension table provides rows with host set ids and hosts which are not in that host set. This is ok since the function which updates the dimension table provides the host set and host id chosen so that relationship doesn't need to be captured in the view itself. Co-authored-by: Jeff Mitchell <jeffrey.mitchell@gmail.com>
57 lines
1.4 KiB
Go
57 lines
1.4 KiB
Go
package plugin
|
|
|
|
import (
|
|
"context"
|
|
|
|
"github.com/hashicorp/boundary/internal/db"
|
|
"github.com/hashicorp/boundary/internal/errors"
|
|
"github.com/hashicorp/boundary/internal/host"
|
|
"github.com/hashicorp/boundary/internal/types/subtypes"
|
|
)
|
|
|
|
func init() {
|
|
if err := host.Register(Subtype, HostCatalogPrefix, HostSetPrefix); err != nil {
|
|
panic(err)
|
|
}
|
|
}
|
|
|
|
// PublicId prefixes for the resources in the plugin package.
|
|
const (
|
|
HostCatalogPrefix = "hc"
|
|
HostSetPrefix = "hs"
|
|
HostPrefix = "h"
|
|
|
|
Subtype = subtypes.Subtype("plugin")
|
|
)
|
|
|
|
func newHostCatalogId(ctx context.Context) (string, error) {
|
|
id, err := db.NewPublicId(HostCatalogPrefix)
|
|
if err != nil {
|
|
return "", errors.Wrap(ctx, err, "plugin.newHostCatalogId")
|
|
}
|
|
return id, nil
|
|
}
|
|
|
|
func newHostSetId(ctx context.Context) (string, error) {
|
|
id, err := db.NewPublicId(HostSetPrefix)
|
|
if err != nil {
|
|
return "", errors.Wrap(ctx, err, "plugin.newHostSetId")
|
|
}
|
|
return id, nil
|
|
}
|
|
|
|
func newHostId(ctx context.Context, catalogId, externalId string) (string, error) {
|
|
const op = "plugin.newHostId"
|
|
if catalogId == "" {
|
|
return "", errors.New(ctx, errors.InvalidParameter, op, "missing catalog id")
|
|
}
|
|
if externalId == "" {
|
|
return "", errors.New(ctx, errors.InvalidParameter, op, "missing external id")
|
|
}
|
|
id, err := db.NewPublicId(HostPrefix, db.WithPrngValues([]string{catalogId, externalId}))
|
|
if err != nil {
|
|
return "", errors.Wrap(ctx, err, op)
|
|
}
|
|
return id, nil
|
|
}
|