From f80ebd9f91c9e2a167533cf73996795b4ee997ea Mon Sep 17 00:00:00 2001 From: Qiu Jian Date: Thu, 27 Sep 2018 17:07:33 +0800 Subject: [PATCH 1/2] Add baremetal agent support --- cmd/climc/shell/baremetalagents.go | 31 +++++++++++++++++++++ pkg/mcclient/modules/mod_baremetalagents.go | 15 ++++++++++ 2 files changed, 46 insertions(+) create mode 100644 cmd/climc/shell/baremetalagents.go create mode 100644 pkg/mcclient/modules/mod_baremetalagents.go diff --git a/cmd/climc/shell/baremetalagents.go b/cmd/climc/shell/baremetalagents.go new file mode 100644 index 0000000000..e5ff84b2cd --- /dev/null +++ b/cmd/climc/shell/baremetalagents.go @@ -0,0 +1,31 @@ +package shell + +import ( + "yunion.io/x/jsonutils" + "yunion.io/x/onecloud/pkg/mcclient" + "yunion.io/x/onecloud/pkg/mcclient/modules" + "yunion.io/x/onecloud/pkg/mcclient/options" +) + +func init() { + type BaremetalAgentListOptions struct { + options.BaseListOptions + } + R(&BaremetalAgentListOptions{}, "baremetal-agent-list", "List baremetal agent", func(s *mcclient.ClientSession, args *BaremetalAgentListOptions) error { + var params *jsonutils.JSONDict + { + var err error + params, err = args.BaseListOptions.Params() + if err != nil { + return err + + } + } + result, err := modules.Baremetalagents.List(s, params) + if err != nil { + return err + } + printList(result, modules.Baremetalagents.GetColumns(s)) + return nil + }) +} diff --git a/pkg/mcclient/modules/mod_baremetalagents.go b/pkg/mcclient/modules/mod_baremetalagents.go new file mode 100644 index 0000000000..7050e8f65d --- /dev/null +++ b/pkg/mcclient/modules/mod_baremetalagents.go @@ -0,0 +1,15 @@ +package modules + +var ( + Baremetalagents ResourceManager +) + +func init() { + Baremetalagents = NewComputeManager( + "baremetalagent", + "baremetalagents", + []string{"ID", "Name", "Access_ip", "Manager_URI", "Status"}, + []string{}, + ) + registerCompute(&Baremetalagents) +} From 3ff40b817808b437863c2532a70fcb54cf8e5baa Mon Sep 17 00:00:00 2001 From: Qiu Jian Date: Thu, 27 Sep 2018 18:02:14 +0800 Subject: [PATCH 2/2] =?UTF-8?q?=E4=BF=AE=E6=AD=A3=EF=BC=9A=E4=BC=AA?= =?UTF-8?q?=E5=88=A0=E9=99=A4=E8=99=9A=E6=8B=9F=E6=9C=BA=E7=9A=84=E6=97=B6?= =?UTF-8?q?=E5=80=99=EF=BC=8C=E5=A6=82=E6=9E=9C=E8=99=9A=E6=8B=9F=E6=9C=BA?= =?UTF-8?q?=E5=81=9C=E6=9C=BA=E5=A4=B1=E8=B4=A5=EF=BC=8C=E4=BC=9A=E7=9C=9F?= =?UTF-8?q?=E5=88=A0=E9=99=A4=E8=99=9A=E6=8B=9F=E6=9C=BA?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- pkg/compute/tasks/guest_delete_task.go | 15 ++++++++++++--- 1 file changed, 12 insertions(+), 3 deletions(-) diff --git a/pkg/compute/tasks/guest_delete_task.go b/pkg/compute/tasks/guest_delete_task.go index 7b21109cda..5b5a8e5d51 100644 --- a/pkg/compute/tasks/guest_delete_task.go +++ b/pkg/compute/tasks/guest_delete_task.go @@ -2,6 +2,7 @@ package tasks import ( "context" + "fmt" "yunion.io/x/jsonutils" "yunion.io/x/log" @@ -42,12 +43,19 @@ func (self *GuestDeleteTask) OnGuestStopComplete(ctx context.Context, obj db.ISt } } log.Debugf("XXXXXXX Do real delete on guest ... XXXXXXX") - self.OnGuestStopCompleteFailed(ctx, guest, data) + self.doStartDeleteGuest(ctx, guest) } -func (self *GuestDeleteTask) OnGuestStopCompleteFailed(ctx context.Context, obj db.IStandaloneModel, data jsonutils.JSONObject) { +func (self *GuestDeleteTask) OnGuestStopCompleteFailed(ctx context.Context, obj db.IStandaloneModel, err jsonutils.JSONObject) { guest := obj.(*models.SGuest) - guest.SetStatus(self.UserCred, models.VM_DELETING, "delete anyway") + guest.SetStatus(self.UserCred, models.VM_DELETE_FAIL, err.String()) + db.OpsLog.LogEvent(guest, db.ACT_DELOCATE_FAIL, err, self.UserCred) + self.SetStageFailed(ctx, fmt.Sprintf("stop failed %s", err.String())) +} + +func (self *GuestDeleteTask) doStartDeleteGuest(ctx context.Context, obj db.IStandaloneModel) { + guest := obj.(*models.SGuest) + guest.SetStatus(self.UserCred, models.VM_DELETING, "delete server after stop") db.OpsLog.LogEvent(guest, db.ACT_DELOCATING, nil, self.UserCred) self.StartDeleteGuest(ctx, guest) } @@ -92,6 +100,7 @@ func (self *GuestDeleteTask) OnGuestDeleteCompleteFailed(ctx context.Context, ob guest := obj.(*models.SGuest) guest.SetStatus(self.UserCred, models.VM_DELETE_FAIL, err.String()) db.OpsLog.LogEvent(guest, db.ACT_DELOCATE_FAIL, err, self.UserCred) + self.SetStageFailed(ctx, fmt.Sprintf("delete failed %s", err.String())) } func (self *GuestDeleteTask) OnGuestDeleteComplete(ctx context.Context, obj db.IStandaloneModel, data jsonutils.JSONObject) {