Compare commits

...

12 Commits

9 changed files with 49 additions and 33 deletions

View File

@ -31,7 +31,7 @@ func stackLogs(c *cli.Context, stackName string, client *dockerClient.Client) {
wg.Add(1)
go func(s string) {
logOpts := types.ContainerLogsOptions{
Details: true,
Details: false,
Follow: true,
ShowStderr: true,
ShowStdout: true,
@ -88,7 +88,7 @@ var appLogsCommand = &cli.Command{
}
logOpts := types.ContainerLogsOptions{
Details: true,
Details: false,
Follow: true,
ShowStderr: true,
ShowStdout: true,

View File

@ -7,6 +7,7 @@ import (
"coopcloud.tech/abra/cli/internal"
"coopcloud.tech/abra/pkg/client"
"coopcloud.tech/abra/pkg/config"
stack "coopcloud.tech/abra/pkg/upstream/stack"
"github.com/AlecAivazis/survey/v2"
"github.com/docker/docker/api/types"
"github.com/docker/docker/api/types/filters"
@ -48,23 +49,18 @@ var appRemoveCommand = &cli.Command{
}
}
appFiles, err := config.LoadAppFiles("")
if err != nil {
logrus.Fatal(err)
}
cl, err := client.New(app.Server)
if err != nil {
logrus.Fatal(err)
}
if !internal.Force {
// FIXME: only query for app we are interested in, not all of them!
statuses, err := config.GetAppStatuses(appFiles)
isDeployed, _, err := stack.IsDeployed(c.Context, cl, app.StackName())
if err != nil {
logrus.Fatal(err)
}
if statuses[app.Name]["status"] == "deployed" {
logrus.Fatalf("'%s' is still deployed. Run \"abra app %s undeploy\" or pass --force", app.Name, app.Name)
if isDeployed {
logrus.Fatalf("'%s' is still deployed. Run \"abra app undeploy %s \" or pass --force", app.Name, app.Name)
}
}

View File

@ -40,12 +40,14 @@ var CatalogueSkipList = map[string]bool{
"docker-cp-deploy": true,
"docker-dind-bats-kcov": true,
"docs.coopcloud.tech": true,
"drone-abra": true,
"example": true,
"gardening": true,
"go-abra": true,
"organising": true,
"pyabra": true,
"radicle-seed-node": true,
"recipes": true,
"stack-ssh-deploy": true,
"swarm-cronjob": true,
"tagcmp": true,
@ -176,7 +178,7 @@ A new catalogue copy can be published to the recipes repository by passing the
features, category, err := catalogue.GetRecipeFeaturesAndCategory(recipeMeta.Name)
if err != nil {
logrus.Fatal(err)
logrus.Warn(err)
}
catl[recipeMeta.Name] = catalogue.RecipeMeta{

View File

@ -26,7 +26,7 @@ func DeployAction(c *cli.Context) error {
logrus.Fatal(err)
}
logrus.Debugf("checking whether '%s' is already deployed", stackName)
logrus.Debugf("checking whether %s is already deployed", stackName)
isDeployed, deployedVersion, err := stack.IsDeployed(c.Context, cl, stackName)
if err != nil {
@ -35,9 +35,9 @@ func DeployAction(c *cli.Context) error {
if isDeployed {
if Force || Chaos {
logrus.Warnf("'%s' is already deployed but continuing (--force/--chaos)", stackName)
logrus.Warnf("%s is already deployed but continuing (--force/--chaos)", stackName)
} else {
logrus.Fatalf("'%s' is already deployed", stackName)
logrus.Fatalf("%s is already deployed", stackName)
}
}
@ -53,7 +53,7 @@ func DeployAction(c *cli.Context) error {
}
if len(versions) > 0 {
version = versions[len(versions)-1]
logrus.Debugf("choosing '%s' as version to deploy", version)
logrus.Debugf("choosing %s as version to deploy", version)
if err := recipe.EnsureVersion(app.Type, version); err != nil {
logrus.Fatal(err)
}
@ -67,7 +67,7 @@ func DeployAction(c *cli.Context) error {
}
if version == "" && !Chaos {
logrus.Debugf("choosing '%s' as version to deploy", version)
logrus.Debugf("choosing %s as version to deploy", version)
if err := recipe.EnsureVersion(app.Type, version); err != nil {
logrus.Fatal(err)
}

View File

@ -236,7 +236,7 @@ func installDocker(c *cli.Context, cl *dockerClient.Client, sshCl *ssh.Client, d
}
}
logrus.Infof("docker is installed on %s", domainName)
logrus.Infof("docker is already installed on %s", domainName)
return nil
}
@ -276,7 +276,8 @@ func initSwarm(c *cli.Context, cl *dockerClient.Client, domainName string) error
AdvertiseAddr: ipv4,
}
if _, err := cl.SwarmInit(c.Context, initReq); err != nil {
if !strings.Contains(err.Error(), "is already part of a swarm") {
if !strings.Contains(err.Error(), "is already part of a swarm") ||
!strings.Contains(err.Error(), "must specify a listening address") {
return err
}
logrus.Infof("swarm mode already initialised on %s", domainName)

View File

@ -411,7 +411,7 @@ func GetImageMetadata(imageRowString string) (image, error) {
if err != nil {
logrus.Fatal(err)
}
img.Image = imageName
img.Image = strings.ReplaceAll(imageName, "`", "")
imageURL, err := GetStringInBetween(imgString, "(", ")")
if err != nil {
@ -441,7 +441,7 @@ func GetRecipeFeaturesAndCategory(recipeName string) (features, string, error) {
"<!-- metadata -->", "<!-- endmetadata -->",
)
if err != nil {
logrus.Fatal(err)
return feat, category, err
}
readmeLines := strings.Split( // Array item from lines
@ -553,9 +553,21 @@ func GetRecipeVersions(recipeName string) (RecipeVersions, error) {
path = strings.Split(path, "/")[1]
}
var tag string
switch img.(type) {
case reference.NamedTagged:
tag = img.(reference.NamedTagged).Tag()
case reference.Named:
logrus.Warnf("%s service is missing image tag?", path)
continue
}
logrus.Debugf("looking up image: '%s' from '%s'", img, path)
digest, err := client.GetTagDigest(img)
if err != nil {
return err
logrus.Warn(err)
continue
}
versionMeta[service.Name] = ServiceMeta{

View File

@ -157,7 +157,8 @@ func EnsureVersion(recipeName, version string) error {
logrus.Debugf("read '%s' as tags for recipe '%s'", strings.Join(parsedTags, ", "), recipeName)
if tagRef.String() == "" {
return fmt.Errorf("%s is not available?", version)
logrus.Warnf("%s recipe has no local tag: %s? this recipe version is not released?", recipeName, version)
return nil
}
worktree, err := repo.Worktree()

View File

@ -350,7 +350,7 @@ func deployServices(
existingServiceMap[service.Spec.Name] = service
}
var serviceIDs []string
serviceIDs := make(map[string]string)
for internalName, serviceSpec := range services {
var (
name = namespace.Scope(internalName)
@ -410,7 +410,7 @@ func deployServices(
return errors.Wrapf(err, "failed to update service %s", name)
}
serviceIDs = append(serviceIDs, service.ID)
serviceIDs[service.ID] = name
for _, warning := range response.Warnings {
logrus.Warn(warning)
@ -430,15 +430,19 @@ func deployServices(
return errors.Wrapf(err, "failed to create service %s", name)
}
serviceIDs = append(serviceIDs, serviceCreateResponse.ID)
serviceIDs[serviceCreateResponse.ID] = name
}
}
logrus.Infof("waiting for services to converge: %s", strings.Join(serviceIDs, ", "))
var serviceNames []string
for _, serviceName := range serviceIDs {
serviceNames = append(serviceNames, serviceName)
}
logrus.Infof("waiting for services to converge: %s", strings.Join(serviceNames, ", "))
ch := make(chan error, len(serviceIDs))
for _, serviceID := range serviceIDs {
logrus.Debugf("waiting on %s to converge", serviceID)
for serviceID, serviceName := range serviceIDs {
logrus.Debugf("waiting on %s to converge", serviceName)
go func(s string) {
ch <- waitOnService(ctx, cl, s)
}(serviceID)

View File

@ -76,13 +76,13 @@ function install_abra_release {
p=$HOME/.local/bin
com="echo PATH=\$PATH:$p"
if [[ $SHELL =~ "bash" ]]; then
echo "echo $com >> $HOME/.bashrc"
echo "$com >> $HOME/.bashrc"
elif [[ $SHELL =~ "fizsh" ]]; then
echo "echo $com >> $HOME/.fizsh/.fizshrc"
echo "$com >> $HOME/.fizsh/.fizshrc"
elif [[ $SHELL =~ "zsh" ]]; then
echo "echo $com >> $HOME/.zshrc"
echo "$com >> $HOME/.zshrc"
else
echo "echo $com >> $HOME/.profile"
echo "$com >> $HOME/.profile"
fi
fi