Class: Kontena::Plugin::Cloud::Image::LoginCommand
- Inherits:
-
Command
- Object
- Clamp::Command
- Command
- Kontena::Plugin::Cloud::Image::LoginCommand
- Includes:
- Cli::Common, Common
- Defined in:
- lib/kontena/plugin/cloud/image/login_command.rb
Constant Summary
Constants included from CloudCommand
CloudCommand::PLATFORM_NOT_SELECTED_ERROR
Instance Method Summary collapse
Methods included from Common
#default_org, #image_distribution_url, #image_registry_client, #image_registry_url
Methods included from CloudCommand
#verify_current_grid, #verify_current_master, #verify_current_master_token
Instance Method Details
#execute ⇒ Object
11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 |
# 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 |