2022-05-22 05:34:09 +00:00
|
|
|
package demo
|
|
|
|
|
|
|
|
import (
|
|
|
|
"github.com/pkg/errors"
|
|
|
|
portainer "github.com/portainer/portainer/api"
|
|
|
|
"github.com/portainer/portainer/api/dataservices"
|
|
|
|
)
|
|
|
|
|
|
|
|
func initDemoUser(
|
|
|
|
store dataservices.DataStore,
|
|
|
|
cryptoService portainer.CryptoService,
|
|
|
|
) (portainer.UserID, error) {
|
|
|
|
|
|
|
|
password, err := cryptoService.Hash("tryportainer")
|
|
|
|
if err != nil {
|
|
|
|
return 0, errors.WithMessage(err, "failed creating password hash")
|
|
|
|
}
|
|
|
|
|
|
|
|
admin := &portainer.User{
|
|
|
|
Username: "admin",
|
|
|
|
Password: password,
|
|
|
|
Role: portainer.AdministratorRole,
|
|
|
|
}
|
|
|
|
|
|
|
|
err = store.User().Create(admin)
|
|
|
|
return admin.ID, errors.WithMessage(err, "failed creating user")
|
|
|
|
}
|
|
|
|
|
|
|
|
func initDemoEndpoints(store dataservices.DataStore) ([]portainer.EndpointID, error) {
|
|
|
|
localEndpointId, err := initDemoLocalEndpoint(store)
|
|
|
|
if err != nil {
|
|
|
|
return nil, err
|
|
|
|
}
|
|
|
|
|
|
|
|
// second and third endpoints are going to be created with docker-compose as a part of the demo environment set up.
|
|
|
|
// ref: https://github.com/portainer/portainer-demo/blob/master/docker-compose.yml
|
|
|
|
return []portainer.EndpointID{localEndpointId, localEndpointId + 1, localEndpointId + 2}, nil
|
|
|
|
}
|
|
|
|
|
|
|
|
func initDemoLocalEndpoint(store dataservices.DataStore) (portainer.EndpointID, error) {
|
|
|
|
id := portainer.EndpointID(store.Endpoint().GetNextIdentifier())
|
|
|
|
localEndpoint := &portainer.Endpoint{
|
|
|
|
ID: id,
|
|
|
|
Name: "local",
|
|
|
|
URL: "unix:///var/run/docker.sock",
|
|
|
|
PublicURL: "demo.portainer.io",
|
|
|
|
Type: portainer.DockerEnvironment,
|
|
|
|
GroupID: portainer.EndpointGroupID(1),
|
|
|
|
TLSConfig: portainer.TLSConfiguration{
|
|
|
|
TLS: false,
|
|
|
|
},
|
|
|
|
AuthorizedUsers: []portainer.UserID{},
|
|
|
|
AuthorizedTeams: []portainer.TeamID{},
|
|
|
|
UserAccessPolicies: portainer.UserAccessPolicies{},
|
|
|
|
TeamAccessPolicies: portainer.TeamAccessPolicies{},
|
|
|
|
TagIDs: []portainer.TagID{},
|
|
|
|
Status: portainer.EndpointStatusUp,
|
|
|
|
Snapshots: []portainer.DockerSnapshot{},
|
|
|
|
Kubernetes: portainer.KubernetesDefault(),
|
|
|
|
}
|
|
|
|
|
|
|
|
err := store.Endpoint().Create(localEndpoint)
|
2022-09-22 20:05:10 +00:00
|
|
|
if err != nil {
|
|
|
|
return id, errors.WithMessage(err, "failed creating local endpoint")
|
|
|
|
}
|
|
|
|
|
|
|
|
err = store.Snapshot().Create(&portainer.Snapshot{EndpointID: id})
|
|
|
|
if err != nil {
|
|
|
|
return id, errors.WithMessage(err, "failed creating snapshot")
|
|
|
|
}
|
|
|
|
|
2022-05-22 05:34:09 +00:00
|
|
|
return id, errors.WithMessage(err, "failed creating local endpoint")
|
|
|
|
}
|
|
|
|
|
|
|
|
func initDemoSettings(
|
|
|
|
store dataservices.DataStore,
|
|
|
|
) error {
|
|
|
|
settings, err := store.Settings().Settings()
|
|
|
|
if err != nil {
|
|
|
|
return errors.WithMessage(err, "failed fetching settings")
|
|
|
|
}
|
|
|
|
|
|
|
|
settings.EnableTelemetry = false
|
|
|
|
settings.LogoURL = ""
|
|
|
|
|
|
|
|
err = store.Settings().UpdateSettings(settings)
|
|
|
|
return errors.WithMessage(err, "failed updating settings")
|
|
|
|
}
|