# README

HSP Docker

Go Reference

The docker client provides access to the HSDP Docker registry.

Example usage

The following example will create a console.Client and use it to create a docker.Client to list all namespaces and repositories in the us-east region:

package main

import (
	"context"
	"fmt"

	"github.com/philips-software/go-hsdp-api/console"
	"github.com/philips-software/go-hsdp-api/console/docker"
)

func main() {
	consoleClient, err := console.NewClient(nil, &console.Config{
		Region:   "us-east",
	})
	if err != nil {
		fmt.Printf("Error creating console client: %v\n", err)
	}
	err = consoleClient.Login("cfusernamehere", `cfpasswordhere`)
	if err != nil {
		fmt.Printf("Error logging into Console: %v\n", err)
		return
	}
	dockerClient, err := docker.NewClient(consoleClient, &docker.Config{
		Region:   "us-east",
	})
	if err != nil {
		fmt.Printf("Error creating docker client: %v\n", err)
	}
	ctx := context.Background()
	list, err := dockerClient.Namespaces.GetNamespaces(ctx)

	if err != nil {
		fmt.Printf("Error getting namespaces: %v\n", err)
		return
	}
	for _, namespace := range *list {
		fmt.Printf("------ Namespace: %s --------\n", namespace.ID)
		repos, err := dockerClient.Namespaces.GetRepositories(ctx, namespace.ID)
		if err != nil {
			fmt.Printf("Error fetching repo '%s': %v\n", namespace.ID, err)
			continue
		}
		for _, repo := range *repos {
			latest, err := dockerClient.Repositories.GetLatestTag(ctx, repo.ID)
			tag := ""
			digest := ""
			if err == nil {
				tag = ":" + latest.Name

			}
			fmt.Printf("Repo: %s/%s%s (%s)\n", namespace.ID, repo.Name, tag, digest)
		}
	}
}