class Kontena::Plugin::Cloud::Image::LoginCommand
Public Instance Methods
execute()
click to toggle source
# File lib/kontena/plugin/cloud/image/login_command.rb, line 11 def execute token = nil spinner "Creating a new Kontena Cloud token for Docker" do data = { attributes: { name: 'docker' } } token = cloud_client.post("/user/personal_access_tokens", { data: data })['data'] end success = spinner "Logging in to the Kontena Cloud Image Registry" do |spin| pass = token.dig('attributes', 'access-token') if `docker login --help`['--password-stdin'] output, stderr, status = Open3.capture3("docker login -u %s --password-stdin %s" % [current_account.username, image_distribution_url].map(&:shellescape), :stdin_data => pass) unless status.success? exit_with_error stderr end else output, stderr, status = Open3.capture3("docker login -u %s --password \"%s\" %s" % [current_account.username, pass, image_distribution_url]) unless status.success? exit_with_error stderr end end true end if success puts puts " Login succeeded. Now you should be able to push and pull images using docker" puts " cli from #{pastel.cyan(image_distribution_url)}" puts puts " Example:" puts puts " #{pastel.green.on_black(' docker tag localimage images.kontena.io/organization/imagename ')}" puts " #{pastel.green.on_black(' docker push images.kontena.io/organization/imagename ')}" puts puts " To configure grid nodes to pull from Kontena Cloud Image Registry you should:" puts puts " 1. Create a non-expiring token for authentication:" puts puts " #{pastel.green.on_black(' kontena cloud token create <name> ')}" puts puts " 2. Configure your platform to use Kontena Cloud Image Registry as an external" puts " registry:" puts puts " #{pastel.green.on_black(' kontena external-registry add -u <username> -p <token> https://images.kontena.io ')}" puts end end