central-cli 0.6.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +7 -0
- data/.dockerignore +3 -0
- data/.gitignore +15 -0
- data/.rspec +6 -0
- data/.rubocop.yml +5 -0
- data/Dockerfile +15 -0
- data/Gemfile +10 -0
- data/LICENSE +191 -0
- data/README.md +39 -0
- data/Rakefile +9 -0
- data/VERSION +1 -0
- data/bin/cm +85 -0
- data/central-cli.gemspec +35 -0
- data/central-docker.sh +6 -0
- data/lib/central/cli/app_command.rb +29 -0
- data/lib/central/cli/apps/build_command.rb +24 -0
- data/lib/central/cli/apps/central_yml_generator.rb +88 -0
- data/lib/central/cli/apps/common.rb +166 -0
- data/lib/central/cli/apps/deploy_command.rb +191 -0
- data/lib/central/cli/apps/docker_compose_generator.rb +48 -0
- data/lib/central/cli/apps/docker_helper.rb +85 -0
- data/lib/central/cli/apps/dockerfile_generator.rb +15 -0
- data/lib/central/cli/apps/init_command.rb +91 -0
- data/lib/central/cli/apps/list_command.rb +68 -0
- data/lib/central/cli/apps/logs_command.rb +76 -0
- data/lib/central/cli/apps/monitor_command.rb +93 -0
- data/lib/central/cli/apps/remove_command.rb +80 -0
- data/lib/central/cli/apps/restart_command.rb +38 -0
- data/lib/central/cli/apps/scale_command.rb +31 -0
- data/lib/central/cli/apps/show_command.rb +23 -0
- data/lib/central/cli/apps/start_command.rb +39 -0
- data/lib/central/cli/apps/stop_command.rb +39 -0
- data/lib/central/cli/auth/aws/create_command.rb +34 -0
- data/lib/central/cli/auth/aws_command.rb +7 -0
- data/lib/central/cli/auth/list_command.rb +28 -0
- data/lib/central/cli/auth_command.rb +9 -0
- data/lib/central/cli/bytes_helper.rb +38 -0
- data/lib/central/cli/common.rb +148 -0
- data/lib/central/cli/container_command.rb +10 -0
- data/lib/central/cli/containers/exec_command.rb +21 -0
- data/lib/central/cli/containers/inspect_command.rb +22 -0
- data/lib/central/cli/etcd/common.rb +7 -0
- data/lib/central/cli/etcd/get_command.rb +26 -0
- data/lib/central/cli/etcd/list_command.rb +31 -0
- data/lib/central/cli/etcd/mkdir_command.rb +21 -0
- data/lib/central/cli/etcd/remove_command.rb +25 -0
- data/lib/central/cli/etcd/set_command.rb +22 -0
- data/lib/central/cli/etcd_command.rb +16 -0
- data/lib/central/cli/external_registries/add_command.rb +21 -0
- data/lib/central/cli/external_registries/delete_command.rb +15 -0
- data/lib/central/cli/external_registries/list_command.rb +27 -0
- data/lib/central/cli/external_registries/remove_command.rb +13 -0
- data/lib/central/cli/external_registry_command.rb +14 -0
- data/lib/central/cli/login_command.rb +121 -0
- data/lib/central/cli/logout_command.rb +7 -0
- data/lib/central/cli/master/aws/create_command.rb +41 -0
- data/lib/central/cli/master/aws_command.rb +7 -0
- data/lib/central/cli/master/azure/create_command.rb +39 -0
- data/lib/central/cli/master/azure_command.rb +11 -0
- data/lib/central/cli/master/digital_ocean/create_command.rb +35 -0
- data/lib/central/cli/master/digital_ocean_command.rb +11 -0
- data/lib/central/cli/master/list_command.rb +28 -0
- data/lib/central/cli/master/use_command.rb +34 -0
- data/lib/central/cli/master/users/add_role_command.rb +26 -0
- data/lib/central/cli/master/users/invite_command.rb +24 -0
- data/lib/central/cli/master/users/list_command.rb +18 -0
- data/lib/central/cli/master/users/remove_command.rb +22 -0
- data/lib/central/cli/master/users/remove_role_command.rb +25 -0
- data/lib/central/cli/master/users_command.rb +15 -0
- data/lib/central/cli/master/vagrant/create_command.rb +25 -0
- data/lib/central/cli/master/vagrant/restart_command.rb +20 -0
- data/lib/central/cli/master/vagrant/ssh_command.rb +15 -0
- data/lib/central/cli/master/vagrant/start_command.rb +20 -0
- data/lib/central/cli/master/vagrant/stop_command.rb +20 -0
- data/lib/central/cli/master/vagrant/terminate_command.rb +13 -0
- data/lib/central/cli/master/vagrant_command.rb +21 -0
- data/lib/central/cli/master_command.rb +19 -0
- data/lib/central/cli/node_command.rb +30 -0
- data/lib/central/cli/nodes/add_label_command.rb +19 -0
- data/lib/central/cli/nodes/aws/create_command.rb +40 -0
- data/lib/central/cli/nodes/aws/restart_command.rb +29 -0
- data/lib/central/cli/nodes/aws/terminate_command.rb +21 -0
- data/lib/central/cli/nodes/aws_command.rb +14 -0
- data/lib/central/cli/nodes/azure/create_command.rb +40 -0
- data/lib/central/cli/nodes/azure/restart_command.rb +31 -0
- data/lib/central/cli/nodes/azure/terminate_command.rb +21 -0
- data/lib/central/cli/nodes/azure_command.rb +14 -0
- data/lib/central/cli/nodes/digital_ocean/create_command.rb +32 -0
- data/lib/central/cli/nodes/digital_ocean/restart_command.rb +27 -0
- data/lib/central/cli/nodes/digital_ocean/terminate_command.rb +19 -0
- data/lib/central/cli/nodes/digital_ocean_command.rb +14 -0
- data/lib/central/cli/nodes/label_command.rb +12 -0
- data/lib/central/cli/nodes/labels/add_command.rb +19 -0
- data/lib/central/cli/nodes/labels/remove_command.rb +23 -0
- data/lib/central/cli/nodes/list_command.rb +62 -0
- data/lib/central/cli/nodes/remove_command.rb +16 -0
- data/lib/central/cli/nodes/remove_label_command.rb +23 -0
- data/lib/central/cli/nodes/show_command.rb +49 -0
- data/lib/central/cli/nodes/ssh_command.rb +31 -0
- data/lib/central/cli/nodes/update_command.rb +20 -0
- data/lib/central/cli/nodes/vagrant/create_command.rb +27 -0
- data/lib/central/cli/nodes/vagrant/restart_command.rb +26 -0
- data/lib/central/cli/nodes/vagrant/ssh_command.rb +21 -0
- data/lib/central/cli/nodes/vagrant/start_command.rb +26 -0
- data/lib/central/cli/nodes/vagrant/stop_command.rb +26 -0
- data/lib/central/cli/nodes/vagrant/terminate_command.rb +17 -0
- data/lib/central/cli/nodes/vagrant_command.rb +20 -0
- data/lib/central/cli/register_command.rb +21 -0
- data/lib/central/cli/registry/create_command.rb +144 -0
- data/lib/central/cli/registry/delete_command.rb +22 -0
- data/lib/central/cli/registry/remove_command.rb +19 -0
- data/lib/central/cli/registry_command.rb +11 -0
- data/lib/central/cli/service_command.rb +49 -0
- data/lib/central/cli/services/add_env_command.rb +19 -0
- data/lib/central/cli/services/add_secret_command.rb +24 -0
- data/lib/central/cli/services/container_command.rb +8 -0
- data/lib/central/cli/services/containers_command.rb +32 -0
- data/lib/central/cli/services/create_command.rb +90 -0
- data/lib/central/cli/services/delete_command.rb +19 -0
- data/lib/central/cli/services/deploy_command.rb +21 -0
- data/lib/central/cli/services/env_command.rb +11 -0
- data/lib/central/cli/services/envs/add_command.rb +19 -0
- data/lib/central/cli/services/envs/list_command.rb +20 -0
- data/lib/central/cli/services/envs/remove_command.rb +18 -0
- data/lib/central/cli/services/envs_command.rb +20 -0
- data/lib/central/cli/services/link_command.rb +26 -0
- data/lib/central/cli/services/list_command.rb +42 -0
- data/lib/central/cli/services/logs_command.rb +57 -0
- data/lib/central/cli/services/monitor_command.rb +58 -0
- data/lib/central/cli/services/remove_command.rb +17 -0
- data/lib/central/cli/services/remove_env_command.rb +18 -0
- data/lib/central/cli/services/remove_secret_command.rb +28 -0
- data/lib/central/cli/services/restart_command.rb +17 -0
- data/lib/central/cli/services/scale_command.rb +17 -0
- data/lib/central/cli/services/secret_command.rb +9 -0
- data/lib/central/cli/services/secrets/link_command.rb +24 -0
- data/lib/central/cli/services/secrets/unlink_command.rb +28 -0
- data/lib/central/cli/services/services_helper.rb +360 -0
- data/lib/central/cli/services/show_command.rb +18 -0
- data/lib/central/cli/services/start_command.rb +17 -0
- data/lib/central/cli/services/stats_command.rb +74 -0
- data/lib/central/cli/services/stop_command.rb +17 -0
- data/lib/central/cli/services/unlink_command.rb +25 -0
- data/lib/central/cli/services/update_command.rb +78 -0
- data/lib/central/cli/stack_command.rb +32 -0
- data/lib/central/cli/stack_options.rb +11 -0
- data/lib/central/cli/stacks/add_user_command.rb +18 -0
- data/lib/central/cli/stacks/audit_log_command.rb +21 -0
- data/lib/central/cli/stacks/cloud_config_command.rb +41 -0
- data/lib/central/cli/stacks/common.rb +95 -0
- data/lib/central/cli/stacks/create_command.rb +26 -0
- data/lib/central/cli/stacks/current_command.rb +25 -0
- data/lib/central/cli/stacks/env_command.rb +32 -0
- data/lib/central/cli/stacks/list_command.rb +35 -0
- data/lib/central/cli/stacks/list_users_command.rb +26 -0
- data/lib/central/cli/stacks/logs_command.rb +81 -0
- data/lib/central/cli/stacks/remove_command.rb +26 -0
- data/lib/central/cli/stacks/remove_user_command.rb +17 -0
- data/lib/central/cli/stacks/show_command.rb +19 -0
- data/lib/central/cli/stacks/trusted_subnets/add_command.rb +16 -0
- data/lib/central/cli/stacks/trusted_subnets/list_command.rb +17 -0
- data/lib/central/cli/stacks/trusted_subnets/remove_command.rb +20 -0
- data/lib/central/cli/stacks/update_command.rb +27 -0
- data/lib/central/cli/stacks/use_command.rb +21 -0
- data/lib/central/cli/stacks/user_command.rb +11 -0
- data/lib/central/cli/stacks/users/add_command.rb +18 -0
- data/lib/central/cli/stacks/users/list_command.rb +18 -0
- data/lib/central/cli/stacks/users/remove_command.rb +17 -0
- data/lib/central/cli/user/forgot_password_command.rb +16 -0
- data/lib/central/cli/user/reset_password_command.rb +21 -0
- data/lib/central/cli/user/verify_command.rb +22 -0
- data/lib/central/cli/user_command.rb +12 -0
- data/lib/central/cli/vault/list_command.rb +25 -0
- data/lib/central/cli/vault/read_command.rb +17 -0
- data/lib/central/cli/vault/remove_command.rb +14 -0
- data/lib/central/cli/vault/update_command.rb +18 -0
- data/lib/central/cli/vault/write_command.rb +22 -0
- data/lib/central/cli/vault_command.rb +16 -0
- data/lib/central/cli/version.rb +5 -0
- data/lib/central/cli/version_command.rb +22 -0
- data/lib/central/cli/vpn/config_command.rb +25 -0
- data/lib/central/cli/vpn/create_command.rb +71 -0
- data/lib/central/cli/vpn/delete_command.rb +21 -0
- data/lib/central/cli/vpn/remove_command.rb +19 -0
- data/lib/central/cli/vpn_command.rb +13 -0
- data/lib/central/cli/whoami_command.rb +20 -0
- data/lib/central/client.rb +208 -0
- data/lib/central/errors.rb +10 -0
- data/lib/central/machine/aws.rb +14 -0
- data/lib/central/machine/aws/auth_provisioner.rb +161 -0
- data/lib/central/machine/aws/cloudinit.yml +71 -0
- data/lib/central/machine/aws/cloudinit_master.yml +118 -0
- data/lib/central/machine/aws/cloudinit_oauth.yml +76 -0
- data/lib/central/machine/aws/common.rb +31 -0
- data/lib/central/machine/aws/master_provisioner.rb +171 -0
- data/lib/central/machine/aws/node_destroyer.rb +46 -0
- data/lib/central/machine/aws/node_provisioner.rb +214 -0
- data/lib/central/machine/azure.rb +13 -0
- data/lib/central/machine/azure/cloudinit.yml +64 -0
- data/lib/central/machine/azure/cloudinit_master.yml +106 -0
- data/lib/central/machine/azure/logger.rb +26 -0
- data/lib/central/machine/azure/master_provisioner.rb +125 -0
- data/lib/central/machine/azure/node_destroyer.rb +52 -0
- data/lib/central/machine/azure/node_provisioner.rb +126 -0
- data/lib/central/machine/cert_helper.rb +39 -0
- data/lib/central/machine/cloud_config/cloudinit.yml +70 -0
- data/lib/central/machine/cloud_config/node_generator.rb +27 -0
- data/lib/central/machine/common.rb +16 -0
- data/lib/central/machine/digital_ocean.rb +13 -0
- data/lib/central/machine/digital_ocean/cloudinit.yml +64 -0
- data/lib/central/machine/digital_ocean/cloudinit_master.yml +118 -0
- data/lib/central/machine/digital_ocean/master_provisioner.rb +99 -0
- data/lib/central/machine/digital_ocean/node_destroyer.rb +40 -0
- data/lib/central/machine/digital_ocean/node_provisioner.rb +81 -0
- data/lib/central/machine/random_name.rb +39 -0
- data/lib/central/machine/vagrant.rb +12 -0
- data/lib/central/machine/vagrant/Vagrantfile.master.rb.erb +116 -0
- data/lib/central/machine/vagrant/Vagrantfile.node.rb.erb +32 -0
- data/lib/central/machine/vagrant/cloudinit.yml +73 -0
- data/lib/central/machine/vagrant/master_destroyer.rb +34 -0
- data/lib/central/machine/vagrant/master_provisioner.rb +79 -0
- data/lib/central/machine/vagrant/node_destroyer.rb +38 -0
- data/lib/central/machine/vagrant/node_provisioner.rb +68 -0
- data/lib/central/scripts/completer +157 -0
- data/lib/central/scripts/init +11 -0
- data/spec/central/cli/app/common_spec.rb +150 -0
- data/spec/central/cli/app/deploy_command_spec.rb +598 -0
- data/spec/central/cli/app/docker_helper_spec.rb +102 -0
- data/spec/central/cli/app/scale_spec.rb +49 -0
- data/spec/central/cli/common_spec.rb +117 -0
- data/spec/central/cli/login_command_spec.rb +31 -0
- data/spec/central/cli/master/current_command_spec.rb +55 -0
- data/spec/central/cli/master/use_command_spec.rb +37 -0
- data/spec/central/cli/master/users/invite_command_spec.rb +34 -0
- data/spec/central/cli/master/users/remove_command_spec.rb +26 -0
- data/spec/central/cli/master/users/roles/add_command_spec.rb +34 -0
- data/spec/central/cli/master/users/roles/remove_command_spec.rb +34 -0
- data/spec/central/cli/register_command_spec.rb +56 -0
- data/spec/central/cli/services/containers_command_spec.rb +40 -0
- data/spec/central/cli/services/link_command_spec.rb +38 -0
- data/spec/central/cli/services/restart_command_spec.rb +27 -0
- data/spec/central/cli/services/secrets/link_command_spec.rb +59 -0
- data/spec/central/cli/services/secrets/unlink_command_spec.rb +48 -0
- data/spec/central/cli/services/services_helper_spec.rb +170 -0
- data/spec/central/cli/services/unlink_command_spec.rb +38 -0
- data/spec/central/cli/stacks/trusted_subnets/add_command_spec.rb +37 -0
- data/spec/central/cli/stacks/trusted_subnets/list_command_spec.rb +30 -0
- data/spec/central/cli/stacks/trusted_subnets/remove_command_spec.rb +37 -0
- data/spec/central/cli/version_command_spec.rb +16 -0
- data/spec/fixtures/central.yml +17 -0
- data/spec/fixtures/docker-compose.yml +8 -0
- data/spec/fixtures/mysql.yml +3 -0
- data/spec/fixtures/wordpress-scaled.yml +3 -0
- data/spec/fixtures/wordpress.yml +2 -0
- data/spec/spec_helper.rb +27 -0
- data/spec/support/client_helpers.rb +30 -0
- data/spec/support/fixtures_helpers.rb +7 -0
- data/tasks/rspec.rake +5 -0
- metadata +463 -0
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
module Central::Cli::Registry
|
|
2
|
+
class DeleteCommand < Clamp::Command
|
|
3
|
+
include Central::Cli::Common
|
|
4
|
+
include Central::Cli::StackOptions
|
|
5
|
+
|
|
6
|
+
def execute
|
|
7
|
+
puts "DEPRECATION WARNING: Support for 'central registry delete' will be dropped. Use 'central registry remove' instead.".colorize(:red)
|
|
8
|
+
|
|
9
|
+
require_api_url
|
|
10
|
+
token = require_token
|
|
11
|
+
|
|
12
|
+
registry = begin
|
|
13
|
+
client(token).get("services/#{current_stack}/registry")
|
|
14
|
+
rescue
|
|
15
|
+
nil
|
|
16
|
+
end
|
|
17
|
+
abort('Docker Registry service does not exist') if registry.nil?
|
|
18
|
+
|
|
19
|
+
client(token).delete("services/#{current_stack}/registry")
|
|
20
|
+
end
|
|
21
|
+
end
|
|
22
|
+
end
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
module Central::Cli::Registry
|
|
2
|
+
class RemoveCommand < Clamp::Command
|
|
3
|
+
include Central::Cli::Common
|
|
4
|
+
|
|
5
|
+
def execute
|
|
6
|
+
require_api_url
|
|
7
|
+
token = require_token
|
|
8
|
+
|
|
9
|
+
registry = begin
|
|
10
|
+
client(token).get("services/#{current_stack}/registry")
|
|
11
|
+
rescue
|
|
12
|
+
nil
|
|
13
|
+
end
|
|
14
|
+
abort('Docker Registry service does not exist') if registry.nil?
|
|
15
|
+
|
|
16
|
+
client(token).delete("services/#{current_stack}/registry")
|
|
17
|
+
end
|
|
18
|
+
end
|
|
19
|
+
end
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
require_relative 'registry/create_command'
|
|
2
|
+
require_relative 'registry/delete_command'
|
|
3
|
+
require_relative 'registry/remove_command'
|
|
4
|
+
|
|
5
|
+
class Central::Cli::RegistryCommand < Clamp::Command
|
|
6
|
+
subcommand 'create', 'Create Docker image registry service', Central::Cli::Registry::CreateCommand
|
|
7
|
+
subcommand %w(remove rm), 'Remove Docker image registry service', Central::Cli::Registry::RemoveCommand
|
|
8
|
+
|
|
9
|
+
def execute
|
|
10
|
+
end
|
|
11
|
+
end
|
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
require_relative 'services/list_command'
|
|
2
|
+
require_relative 'services/show_command'
|
|
3
|
+
require_relative 'services/update_command'
|
|
4
|
+
require_relative 'services/deploy_command'
|
|
5
|
+
require_relative 'services/stop_command'
|
|
6
|
+
require_relative 'services/start_command'
|
|
7
|
+
require_relative 'services/restart_command'
|
|
8
|
+
require_relative 'services/create_command'
|
|
9
|
+
require_relative 'services/scale_command'
|
|
10
|
+
require_relative 'services/delete_command'
|
|
11
|
+
require_relative 'services/remove_command'
|
|
12
|
+
require_relative 'services/containers_command'
|
|
13
|
+
require_relative 'services/logs_command'
|
|
14
|
+
require_relative 'services/stats_command'
|
|
15
|
+
require_relative 'services/monitor_command'
|
|
16
|
+
|
|
17
|
+
require_relative 'services/env_command'
|
|
18
|
+
require_relative 'services/secret_command'
|
|
19
|
+
|
|
20
|
+
require_relative 'services/link_command'
|
|
21
|
+
require_relative 'services/unlink_command'
|
|
22
|
+
|
|
23
|
+
class Central::Cli::ServiceCommand < Clamp::Command
|
|
24
|
+
subcommand %w(list ls), 'List services', Central::Cli::Services::ListCommand
|
|
25
|
+
subcommand 'create', 'Create a new service', Central::Cli::Services::CreateCommand
|
|
26
|
+
subcommand 'show', 'Show service details', Central::Cli::Services::ShowCommand
|
|
27
|
+
subcommand 'update', 'Update service configuration', Central::Cli::Services::UpdateCommand
|
|
28
|
+
subcommand 'deploy', 'Deploy service', Central::Cli::Services::DeployCommand
|
|
29
|
+
subcommand 'stop', 'Stop service', Central::Cli::Services::StopCommand
|
|
30
|
+
subcommand 'start', 'Start service', Central::Cli::Services::StartCommand
|
|
31
|
+
subcommand 'restart', 'Restart service', Central::Cli::Services::RestartCommand
|
|
32
|
+
subcommand 'scale', 'Scale service', Central::Cli::Services::ScaleCommand
|
|
33
|
+
subcommand %w(remove rm), 'Remove service', Central::Cli::Services::RemoveCommand
|
|
34
|
+
subcommand 'delete', '[DEPRECATED] Delete service', Central::Cli::Services::DeleteCommand
|
|
35
|
+
subcommand 'containers', 'List service containers', Central::Cli::Services::ContainersCommand
|
|
36
|
+
subcommand 'logs', 'Show service logs', Central::Cli::Services::LogsCommand
|
|
37
|
+
subcommand 'stats', 'Show service statistics', Central::Cli::Services::StatsCommand
|
|
38
|
+
subcommand 'monitor', 'Monitor', Central::Cli::Services::MonitorCommand
|
|
39
|
+
|
|
40
|
+
subcommand 'env', 'Environment variable specific commands', Central::Cli::Services::EnvCommand
|
|
41
|
+
|
|
42
|
+
subcommand 'secret', 'Secret specific commands', Central::Cli::Services::SecretCommand
|
|
43
|
+
|
|
44
|
+
subcommand 'link', 'Link service to another service', Central::Cli::Services::LinkCommand
|
|
45
|
+
subcommand 'unlink', 'Unlink service from another service', Central::Cli::Services::UnlinkCommand
|
|
46
|
+
|
|
47
|
+
def execute
|
|
48
|
+
end
|
|
49
|
+
end
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
require_relative 'services_helper'
|
|
2
|
+
|
|
3
|
+
module Central::Cli::Services
|
|
4
|
+
class AddEnvCommand < Clamp::Command
|
|
5
|
+
include Central::Cli::Common
|
|
6
|
+
include Central::Cli::StackOptions
|
|
7
|
+
include ServicesHelper
|
|
8
|
+
|
|
9
|
+
parameter 'NAME', 'Service name'
|
|
10
|
+
parameter 'ENV', 'Environment variable'
|
|
11
|
+
|
|
12
|
+
def execute
|
|
13
|
+
require_api_url
|
|
14
|
+
token = require_token
|
|
15
|
+
data = { env: env }
|
|
16
|
+
result = client(token).post("services/#{parse_service_id(name)}/envs", data)
|
|
17
|
+
end
|
|
18
|
+
end
|
|
19
|
+
end
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
require_relative 'services_helper'
|
|
2
|
+
|
|
3
|
+
module Central::Cli::Services
|
|
4
|
+
class AddSecretCommand < Clamp::Command
|
|
5
|
+
include Central::Cli::Common
|
|
6
|
+
include Central::Cli::StackOptions
|
|
7
|
+
include ServicesHelper
|
|
8
|
+
|
|
9
|
+
parameter 'NAME', 'Service name'
|
|
10
|
+
parameter 'SECRET', 'Secret to be added from Vault (format: secret:name:type)'
|
|
11
|
+
|
|
12
|
+
def execute
|
|
13
|
+
require_api_url
|
|
14
|
+
token = require_token
|
|
15
|
+
result = client(token).get("services/#{parse_service_id(name)}")
|
|
16
|
+
secrets = result['secrets']
|
|
17
|
+
secrets << parse_secrets([secret])[0]
|
|
18
|
+
data = {
|
|
19
|
+
secrets: secrets
|
|
20
|
+
}
|
|
21
|
+
client(token).put("services/#{parse_service_id(name)}", data)
|
|
22
|
+
end
|
|
23
|
+
end
|
|
24
|
+
end
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
require_relative 'services_helper'
|
|
2
|
+
|
|
3
|
+
module Central::Cli::Services
|
|
4
|
+
class ContainersCommand < Clamp::Command
|
|
5
|
+
include Central::Cli::Common
|
|
6
|
+
include Central::Cli::StackOptions
|
|
7
|
+
include ServicesHelper
|
|
8
|
+
|
|
9
|
+
parameter 'NAME', 'Service name'
|
|
10
|
+
|
|
11
|
+
def execute
|
|
12
|
+
require_api_url
|
|
13
|
+
token = require_token
|
|
14
|
+
|
|
15
|
+
result = client(token).get("services/#{current_stack}/#{name}/containers")
|
|
16
|
+
result['containers'].each do |container|
|
|
17
|
+
puts "#{container['id']}:"
|
|
18
|
+
puts " rev: #{container['deploy_rev']}"
|
|
19
|
+
puts " node: #{container['node']['name']}"
|
|
20
|
+
puts " dns: #{container['name']}.#{current_stack}.central.local"
|
|
21
|
+
puts " ip: #{container['overlay_cidr'].to_s.split('/')[0]}"
|
|
22
|
+
puts " public ip: #{container['node']['public_ip']}"
|
|
23
|
+
if container['status'] == 'unknown'
|
|
24
|
+
puts " status: #{container['status'].colorize(:yellow)}"
|
|
25
|
+
else
|
|
26
|
+
puts " status: #{container['status']}"
|
|
27
|
+
end
|
|
28
|
+
puts ''
|
|
29
|
+
end
|
|
30
|
+
end
|
|
31
|
+
end
|
|
32
|
+
end
|
|
@@ -0,0 +1,90 @@
|
|
|
1
|
+
require_relative 'services_helper'
|
|
2
|
+
|
|
3
|
+
module Central::Cli::Services
|
|
4
|
+
class CreateCommand < Clamp::Command
|
|
5
|
+
include Central::Cli::Common
|
|
6
|
+
include Central::Cli::StackOptions
|
|
7
|
+
include ServicesHelper
|
|
8
|
+
|
|
9
|
+
parameter 'NAME', 'Service name'
|
|
10
|
+
parameter 'IMAGE', 'Service image (example: redis:3.0)'
|
|
11
|
+
|
|
12
|
+
option ['-p', '--ports'], 'PORTS', "Publish a service's port to the host", multivalued: true
|
|
13
|
+
option ['-e', '--env'], 'ENV', 'Set environment variables', multivalued: true
|
|
14
|
+
option ['-l', '--link'], 'LINK', 'Add link to another service in the form of name:alias', multivalued: true
|
|
15
|
+
option ['-v', '--volume'], 'VOLUME', 'Add a volume or bind mount it from the host', multivalued: true
|
|
16
|
+
option '--volumes-from', 'VOLUMES_FROM', 'Mount volumes from another container', multivalued: true
|
|
17
|
+
option ['-a', '--affinity'], 'AFFINITY', 'Set service affinity', multivalued: true
|
|
18
|
+
option ['-c', '--cpu-shares'], 'CPU_SHARES', 'CPU shares (relative weight)'
|
|
19
|
+
option ['-m', '--memory'], 'MEMORY', 'Memory limit (format: <number><optional unit>, where unit = b, k, m or g)'
|
|
20
|
+
option ['--memory-swap'], 'MEMORY_SWAP', "Total memory usage (memory + swap), set \'-1\' to disable swap (format: <number><optional unit>, where unit = b, k, m or g)"
|
|
21
|
+
option '--cmd', 'CMD', 'Command to execute'
|
|
22
|
+
option '--instances', 'INSTANCES', 'How many instances should be deployed'
|
|
23
|
+
option ['-u', '--user'], 'USER', 'Username who executes first process inside container'
|
|
24
|
+
option '--stateful', :flag, 'Set service as stateful', default: false
|
|
25
|
+
option '--privileged', :flag, 'Give extended privileges to this service', default: false
|
|
26
|
+
option '--cap-add', 'CAP_ADD', 'Add capabitilies', multivalued: true
|
|
27
|
+
option '--cap-drop', 'CAP_DROP', 'Drop capabitilies', multivalued: true
|
|
28
|
+
option '--net', 'NET', 'Network mode'
|
|
29
|
+
option '--log-driver', 'LOG_DRIVER', 'Set logging driver'
|
|
30
|
+
option '--log-opt', 'LOG_OPT', 'Add logging options', multivalued: true
|
|
31
|
+
option '--deploy-strategy', 'STRATEGY', 'Deploy strategy to use (ha, daemon, random)'
|
|
32
|
+
option '--deploy-wait-for-port', 'PORT', 'Wait for port to respond when deploying'
|
|
33
|
+
option '--deploy-min-health', 'FLOAT', 'The minimum percentage (0.0 - 1.0) of healthy instances that do not sacrifice overall service availability while deploying'
|
|
34
|
+
option '--deploy-interval', 'TIME', 'Auto-deploy with given interval (format: <number><unit>, where unit = min, h, d)'
|
|
35
|
+
option '--pid', 'PID', 'Pid namespace to use'
|
|
36
|
+
option '--secret', 'SECRET', 'Import secret from Vault (format: <secret>:<name>:<env>)', multivalued: true
|
|
37
|
+
|
|
38
|
+
def execute
|
|
39
|
+
require_api_url
|
|
40
|
+
token = require_token
|
|
41
|
+
data = {
|
|
42
|
+
name: name,
|
|
43
|
+
image: image,
|
|
44
|
+
stateful: stateful?
|
|
45
|
+
}
|
|
46
|
+
data.merge!(parse_service_data_from_options)
|
|
47
|
+
create_service(token, current_stack, data)
|
|
48
|
+
end
|
|
49
|
+
|
|
50
|
+
##
|
|
51
|
+
# parse given options to hash
|
|
52
|
+
# @return [Hash]
|
|
53
|
+
def parse_service_data_from_options
|
|
54
|
+
data = {}
|
|
55
|
+
data[:ports] = parse_ports(ports_list) unless ports_list.empty?
|
|
56
|
+
data[:links] = parse_links(link_list) unless link_list.empty?
|
|
57
|
+
data[:volumes] = volume_list unless volume_list.empty?
|
|
58
|
+
data[:volumes_from] = volumes_from_list unless volumes_from_list.empty?
|
|
59
|
+
data[:memory] = parse_memory(memory) if memory
|
|
60
|
+
data[:memory_swap] = parse_memory(memory_swap) if memory_swap
|
|
61
|
+
data[:cpu_shares] = cpu_shares if cpu_shares
|
|
62
|
+
data[:affinity] = affinity_list unless affinity_list.empty?
|
|
63
|
+
data[:env] = env_list unless env_list.empty?
|
|
64
|
+
data[:secrets] = parse_secrets(secret_list)
|
|
65
|
+
data[:container_count] = instances if instances
|
|
66
|
+
data[:cmd] = cmd.split(' ') if cmd
|
|
67
|
+
data[:user] = user if user
|
|
68
|
+
data[:image] = parse_image(image) if image
|
|
69
|
+
data[:privileged] = privileged?
|
|
70
|
+
data[:cap_add] = cap_add_list unless cap_add_list.empty?
|
|
71
|
+
data[:cap_drop] = cap_drop_list unless cap_drop_list.empty?
|
|
72
|
+
data[:net] = net if net
|
|
73
|
+
data[:log_driver] = log_driver if log_driver
|
|
74
|
+
data[:log_opts] = parse_log_opts(log_opt_list)
|
|
75
|
+
data[:strategy] = deploy_strategy if deploy_strategy
|
|
76
|
+
data[:deploy_opts] = {}
|
|
77
|
+
if deploy_min_health
|
|
78
|
+
data[:deploy_opts][:min_health] = deploy_min_health.to_f
|
|
79
|
+
end
|
|
80
|
+
if deploy_wait_for_port
|
|
81
|
+
data[:deploy_opts][:wait_for_port] = deploy_wait_for_port.to_i
|
|
82
|
+
end
|
|
83
|
+
if deploy_interval
|
|
84
|
+
data[:deploy_opts][:interval] = parse_relative_time(deploy_interval)
|
|
85
|
+
end
|
|
86
|
+
data[:pid] = pid if pid
|
|
87
|
+
data
|
|
88
|
+
end
|
|
89
|
+
end
|
|
90
|
+
end
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
require_relative 'services_helper'
|
|
2
|
+
|
|
3
|
+
module Central::Cli::Services
|
|
4
|
+
class DeleteCommand < Clamp::Command
|
|
5
|
+
include Central::Cli::Common
|
|
6
|
+
include Central::Cli::StackOptions
|
|
7
|
+
include ServicesHelper
|
|
8
|
+
|
|
9
|
+
parameter 'NAME', 'Service name'
|
|
10
|
+
|
|
11
|
+
def execute
|
|
12
|
+
puts "DEPRECATION WARNING: Support for 'cm service delete' will be dropped. Use 'cm service remove' instead.".colorize(:red)
|
|
13
|
+
require_api_url
|
|
14
|
+
token = require_token
|
|
15
|
+
|
|
16
|
+
result = client(token).delete("services/#{parse_service_id(name)}")
|
|
17
|
+
end
|
|
18
|
+
end
|
|
19
|
+
end
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
require_relative 'services_helper'
|
|
2
|
+
|
|
3
|
+
module Central::Cli::Services
|
|
4
|
+
class DeployCommand < Clamp::Command
|
|
5
|
+
include Central::Cli::Common
|
|
6
|
+
include Central::Cli::StackOptions
|
|
7
|
+
include ServicesHelper
|
|
8
|
+
|
|
9
|
+
parameter 'NAME', 'Service name'
|
|
10
|
+
option '--force-deploy', :flag, 'Force deploy even if service does not have any changes'
|
|
11
|
+
|
|
12
|
+
def execute
|
|
13
|
+
require_api_url
|
|
14
|
+
token = require_token
|
|
15
|
+
service_id = name
|
|
16
|
+
data = {}
|
|
17
|
+
data[:force] = true if force_deploy?
|
|
18
|
+
deploy_service(token, service_id, data)
|
|
19
|
+
end
|
|
20
|
+
end
|
|
21
|
+
end
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
module Central::Cli::Services
|
|
2
|
+
require_relative 'envs/add_command'
|
|
3
|
+
require_relative 'envs/list_command'
|
|
4
|
+
require_relative 'envs/remove_command'
|
|
5
|
+
|
|
6
|
+
class EnvCommand < Clamp::Command
|
|
7
|
+
subcommand %w(list ls), 'List service environment variables', Envs::ListCommand
|
|
8
|
+
subcommand 'add', 'Add environment variable', Envs::AddCommand
|
|
9
|
+
subcommand %w(remove rm), 'Remove environment variable', Envs::RemoveCommand
|
|
10
|
+
end
|
|
11
|
+
end
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
require_relative '../services_helper'
|
|
2
|
+
|
|
3
|
+
module Central::Cli::Services::Envs
|
|
4
|
+
class AddCommand < Clamp::Command
|
|
5
|
+
include Central::Cli::Common
|
|
6
|
+
include Central::Cli::StackOptions
|
|
7
|
+
include Central::Cli::Services::ServicesHelper
|
|
8
|
+
|
|
9
|
+
parameter 'NAME', 'Service name'
|
|
10
|
+
parameter 'ENV', 'Environment variable'
|
|
11
|
+
|
|
12
|
+
def execute
|
|
13
|
+
require_api_url
|
|
14
|
+
token = require_token
|
|
15
|
+
data = { env: env }
|
|
16
|
+
result = client(token).post("services/#{parse_service_id(name)}/envs", data)
|
|
17
|
+
end
|
|
18
|
+
end
|
|
19
|
+
end
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
require_relative '../services_helper'
|
|
2
|
+
|
|
3
|
+
module Central::Cli::Services::Envs
|
|
4
|
+
class ListCommand < Clamp::Command
|
|
5
|
+
include Central::Cli::Common
|
|
6
|
+
include Central::Cli::StackOptions
|
|
7
|
+
include Central::Cli::Services::ServicesHelper
|
|
8
|
+
|
|
9
|
+
parameter 'NAME', 'Service name'
|
|
10
|
+
|
|
11
|
+
def execute
|
|
12
|
+
require_api_url
|
|
13
|
+
token = require_token
|
|
14
|
+
service = client(token).get("services/#{parse_service_id(name)}")
|
|
15
|
+
service['env'].sort.each do |env|
|
|
16
|
+
puts env
|
|
17
|
+
end
|
|
18
|
+
end
|
|
19
|
+
end
|
|
20
|
+
end
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
require_relative '../services_helper'
|
|
2
|
+
|
|
3
|
+
module Central::Cli::Services::Envs
|
|
4
|
+
class RemoveCommand < Clamp::Command
|
|
5
|
+
include Central::Cli::Common
|
|
6
|
+
include Central::Cli::StackOptions
|
|
7
|
+
include Central::Cli::Services::ServicesHelper
|
|
8
|
+
|
|
9
|
+
parameter 'NAME', 'Service name'
|
|
10
|
+
parameter 'ENV', 'Environment variable name'
|
|
11
|
+
|
|
12
|
+
def execute
|
|
13
|
+
require_api_url
|
|
14
|
+
token = require_token
|
|
15
|
+
client(token).delete("services/#{parse_service_id(name)}/envs/#{env}")
|
|
16
|
+
end
|
|
17
|
+
end
|
|
18
|
+
end
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
require_relative 'services_helper'
|
|
2
|
+
|
|
3
|
+
module Central::Cli::Services
|
|
4
|
+
class EnvsCommand < Clamp::Command
|
|
5
|
+
include Central::Cli::Common
|
|
6
|
+
include Central::Cli::StackOptions
|
|
7
|
+
include ServicesHelper
|
|
8
|
+
|
|
9
|
+
parameter 'NAME', 'Service name'
|
|
10
|
+
|
|
11
|
+
def execute
|
|
12
|
+
require_api_url
|
|
13
|
+
token = require_token
|
|
14
|
+
service = client(token).get("services/#{parse_service_id(name)}")
|
|
15
|
+
service['env'].each do |env|
|
|
16
|
+
puts env
|
|
17
|
+
end
|
|
18
|
+
end
|
|
19
|
+
end
|
|
20
|
+
end
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
require_relative '../stack_options'
|
|
2
|
+
require_relative 'services_helper'
|
|
3
|
+
|
|
4
|
+
module Central::Cli::Services
|
|
5
|
+
class LinkCommand < Clamp::Command
|
|
6
|
+
include Central::Cli::Common
|
|
7
|
+
include Central::Cli::StackOptions
|
|
8
|
+
include ServicesHelper
|
|
9
|
+
|
|
10
|
+
parameter 'NAME', 'Service name'
|
|
11
|
+
parameter 'TARGET', 'Link target service name'
|
|
12
|
+
|
|
13
|
+
def execute
|
|
14
|
+
require_api_url
|
|
15
|
+
token = require_token
|
|
16
|
+
|
|
17
|
+
service = client(token).get("services/#{parse_service_id(name)}")
|
|
18
|
+
existing_targets = service['links'].map { |l| l['stack_service_id'].split('/')[1] }
|
|
19
|
+
abort("Service is already linked to #{target}") if existing_targets.include?(target.to_s)
|
|
20
|
+
links = service['links'].map { |l| { name: l['stack_service_id'].split('/')[1], alias: l['alias'] } }
|
|
21
|
+
links << { name: target.to_s, alias: target.to_s }
|
|
22
|
+
data = { links: links }
|
|
23
|
+
update_service(token, name, data)
|
|
24
|
+
end
|
|
25
|
+
end
|
|
26
|
+
end
|