Skip to content

Commit 1aeb472

Browse files
committed
[PLAT-17655] Implement Ansible Destroy in node agent
Summary: Implement destroy server for onprem. For cloud, ansible is not used at all. Test Plan: Manually tested by creating and destroying onprem and CSP universes. Reviewers: svarshney Reviewed By: svarshney Subscribers: yugaware Differential Revision: https://phorge.dev.yugabyte.com/D44973
1 parent b751e72 commit 1aeb472

File tree

27 files changed

+476
-246
lines changed

27 files changed

+476
-246
lines changed

managed/devops/destroy-instance.yml

Lines changed: 0 additions & 14 deletions
This file was deleted.

managed/devops/opscli/ybops/cloud/common/method.py

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -701,8 +701,7 @@ def add_extra_args(self):
701701
help="Delete the static public ip.")
702702

703703
def callback(self, args):
704-
self.update_ansible_vars_with_args(args)
705-
self.cloud.setup_ansible(args).run("destroy-instance.yml", self.extra_vars)
704+
pass
706705

707706

708707
class CreateInstancesMethod(AbstractInstancesMethod):

managed/devops/opscli/ybops/cloud/onprem/method.py

Lines changed: 20 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -300,29 +300,26 @@ def callback(self, args):
300300
scp_result = copy_to_tmp(self.extra_vars, get_datafile_path('preflight_checks.sh'),
301301
remote_tmp_dir=args.remote_tmp_dir)
302302
results["SSH Connection"] = scp_result == 0
303-
304-
sudo_pass_file = '{}/.yb_sudo_pass.sh'.format(args.remote_tmp_dir)
305-
self.extra_vars['sudo_pass_file'] = sudo_pass_file
306-
ansible_status = self.cloud.setup_ansible(args).run("send_sudo_pass.yml",
307-
self.extra_vars, host_info,
308-
print_output=False)
309-
results["Try Ansible Command"] = ansible_status == 0
310-
311-
ports_to_check = ",".join([str(p) for p in [args.master_http_port,
312-
args.master_rpc_port,
313-
args.tserver_http_port,
314-
args.tserver_rpc_port,
315-
args.yb_controller_http_port,
316-
args.yb_controller_rpc_port,
317-
args.cql_proxy_http_port,
318-
args.cql_proxy_rpc_port,
319-
args.ysql_proxy_http_port,
320-
args.ysql_proxy_rpc_port,
321-
args.redis_proxy_http_port,
322-
args.redis_proxy_rpc_port,
323-
args.node_exporter_http_port] if p is not None])
324-
325-
if self.get_connection_type() == "ssh":
303+
sudo_pass_file = '{}/.yb_sudo_pass.sh'.format(args.remote_tmp_dir)
304+
self.extra_vars['sudo_pass_file'] = sudo_pass_file
305+
ansible_status = self.cloud.setup_ansible(args).run("send_sudo_pass.yml",
306+
self.extra_vars, host_info,
307+
print_output=False)
308+
results["Try Ansible Command"] = ansible_status == 0
309+
ports_to_check = ",".join([str(p) for p in [args.master_http_port,
310+
args.master_rpc_port,
311+
args.tserver_http_port,
312+
args.tserver_rpc_port,
313+
args.yb_controller_http_port,
314+
args.yb_controller_rpc_port,
315+
args.cql_proxy_http_port,
316+
args.cql_proxy_rpc_port,
317+
args.ysql_proxy_http_port,
318+
args.ysql_proxy_rpc_port,
319+
args.redis_proxy_http_port,
320+
args.redis_proxy_rpc_port,
321+
args.node_exporter_http_port]
322+
if p is not None])
326323
cmd = "{}/preflight_checks.sh --type {} --yb_home_dir {} --mount_points {} " \
327324
"--ports_to_check {} --sudo_pass_file {} --tmp_dir {} --cleanup".format(
328325
args.remote_tmp_dir, args.precheck_type, YB_HOME_DIR,

managed/devops/roles/destroy_instance/tasks/aws.yml

Lines changed: 0 additions & 33 deletions
This file was deleted.

managed/devops/roles/destroy_instance/tasks/docker.yml

Lines changed: 0 additions & 17 deletions
This file was deleted.

managed/devops/roles/destroy_instance/tasks/main.yml

Lines changed: 0 additions & 16 deletions
This file was deleted.

managed/devops/roles/destroy_instance/tasks/onprem.yml

Lines changed: 0 additions & 7 deletions
This file was deleted.

managed/node-agent/app/server/rpc.go

Lines changed: 19 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -402,11 +402,11 @@ func (server *RPCServer) SubmitTask(
402402
}
403403
setupCGroupInput := req.GetSetupCGroupInput()
404404
if setupCGroupInput != nil {
405-
SetupCgroupHandler := task.NewSetupCgroupHandler(
405+
setupCgroupHandler := task.NewSetupCgroupHandler(
406406
setupCGroupInput,
407407
username,
408408
)
409-
err := task.GetTaskManager().Submit(ctx, taskID, SetupCgroupHandler)
409+
err := task.GetTaskManager().Submit(ctx, taskID, setupCgroupHandler)
410410
if err != nil {
411411
util.FileLogger().
412412
Errorf(ctx, "Error in running setup cGroup - %s", err.Error())
@@ -415,6 +415,21 @@ func (server *RPCServer) SubmitTask(
415415
res.TaskId = taskID
416416
return res, nil
417417
}
418+
destroyServerInput := req.GetDestroyServerInput()
419+
if destroyServerInput != nil {
420+
destroyServerHandler := task.NewDestroyServerHandler(
421+
destroyServerInput,
422+
username,
423+
)
424+
err := task.GetTaskManager().Submit(ctx, taskID, destroyServerHandler)
425+
if err != nil {
426+
util.FileLogger().
427+
Errorf(ctx, "Error in running destroy server - %s", err.Error())
428+
return res, status.Error(codes.Internal, err.Error())
429+
}
430+
res.TaskId = taskID
431+
return res, nil
432+
}
418433
return res, status.Error(codes.Unimplemented, "Unknown task")
419434
}
420435

@@ -596,13 +611,13 @@ func (server *RPCServer) DownloadFile(
596611
}
597612
if err != nil {
598613
util.FileLogger().Errorf(ctx, "Error in reading file %s - %s", filename, err.Error())
599-
return status.Errorf(codes.Internal, err.Error())
614+
return status.Error(codes.Internal, err.Error())
600615
}
601616
res.ChunkData = res.ChunkData[:n]
602617
err = stream.Send(res)
603618
if err != nil {
604619
util.FileLogger().Errorf(ctx, "Error in sending file %s - %s", filename, err.Error())
605-
return status.Errorf(codes.Internal, err.Error())
620+
return status.Error(codes.Internal, err.Error())
606621
}
607622
}
608623
return nil

managed/node-agent/app/server/rpc_test.go

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -35,7 +35,6 @@ var (
3535
)
3636

3737
func init() {
38-
rand.Seed(time.Now().Unix())
3938
}
4039

4140
func randomString(length int) string {

managed/node-agent/app/task/configure_server.go

Lines changed: 11 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -70,10 +70,7 @@ func (h *ConfigureServerHandler) Handle(ctx context.Context) (*pb.DescribeTaskRe
7070
}
7171

7272
// 1) figure out home dir
73-
home := ""
74-
if h.param.GetYbHomeDir() != "" {
75-
home = h.param.GetYbHomeDir()
76-
} else {
73+
if h.param.GetYbHomeDir() == "" {
7774
err := errors.New("ybHomeDir is required")
7875
util.FileLogger().Error(ctx, err.Error())
7976
return nil, err
@@ -89,33 +86,33 @@ func (h *ConfigureServerHandler) Handle(ctx context.Context) (*pb.DescribeTaskRe
8986
return nil, err
9087
}
9188
if cmdInfo.StdOut.String() != yb_metrics_dir {
92-
yb_metrics_dir = filepath.Join(home, "metrics")
89+
yb_metrics_dir = filepath.Join(h.param.GetYbHomeDir(), "metrics")
9390
}
9491

9592
// 3) Execute the shell commands.
96-
err = h.execShellCommands(ctx, home)
93+
err = h.execShellCommands(ctx, h.param.GetYbHomeDir())
9794
if err != nil {
9895
util.FileLogger().Errorf(ctx, "Configure server failed - %s", err.Error())
9996
return nil, err
10097
}
10198

10299
// 4) Setup the server scripts.
103-
err = h.setupServerScript(ctx, home, yb_metrics_dir)
100+
err = h.setupServerScript(ctx, h.param.GetYbHomeDir(), yb_metrics_dir)
104101
if err != nil {
105102
util.FileLogger().Errorf(ctx, "Configure server failed - %s", err.Error())
106103
return nil, err
107104
}
108105

109106
// 5) Enable the user systemd units.
110-
err = h.enableSystemdServices(ctx, home)
107+
err = h.enableSystemdServices(ctx)
111108
if err != nil {
112109
util.FileLogger().Errorf(ctx, "Configure server failed - %s", err.Error())
113110
return nil, err
114111
}
115112

116113
for _, process := range h.param.GetProcesses() {
117114
// 6) Configure the individual specified process.
118-
err = h.configureProcess(ctx, home, process)
115+
err = h.configureProcess(ctx, h.param.GetYbHomeDir(), process)
119116
if err != nil {
120117
util.FileLogger().Errorf(ctx, "Configure server failed - %s", err.Error())
121118
return nil, err
@@ -160,25 +157,18 @@ func (h *ConfigureServerHandler) configureProcess(ctx context.Context, home, pro
160157
return nil
161158
}
162159

163-
func (h *ConfigureServerHandler) enableSystemdServices(ctx context.Context, home string) error {
160+
func (h *ConfigureServerHandler) enableSystemdServices(ctx context.Context) error {
164161
for _, unit := range SystemdUnits {
165-
cmd := module.EnableSystemdUnit(h.username, unit)
166-
h.logOut.WriteLine("Running configure server phase: %s", cmd)
167-
util.FileLogger().Infof(ctx, "Running command %v", cmd)
168-
_, err := module.RunShellCmd(ctx, h.username, h.String(), cmd, h.logOut)
162+
err := module.EnableSystemdService(ctx, h.username, unit, h.logOut)
169163
if err != nil {
170-
util.FileLogger().Errorf(ctx, "Configure server failed in %v - %s", cmd, err.Error())
164+
util.FileLogger().Errorf(ctx, "Configure server failed - %s", err.Error())
171165
return err
172166
}
173-
174167
if unit != "network-online.target" && unit[len(unit)-6:] == "timer" {
175-
startCmd := module.StartSystemdUnit(h.username, unit)
176-
h.logOut.WriteLine("Running configure server phase: %s", startCmd)
177-
util.FileLogger().Infof(ctx, "Running command %v", startCmd)
178-
_, err = module.RunShellCmd(ctx, h.username, h.String(), startCmd, h.logOut)
168+
err := module.StartSystemdService(ctx, h.username, unit, h.logOut)
179169
if err != nil {
180170
util.FileLogger().
181-
Errorf(ctx, "Configure server failed in %v - %s", cmd, err.Error())
171+
Errorf(ctx, "Configure server failed - %s", err.Error())
182172
return err
183173
}
184174
}

0 commit comments

Comments
 (0)