77
88 "k8s.io/api/apps/v1beta1"
99 "k8s.io/apimachinery/pkg/labels"
10- "k8s.io/client-go/kubernetes"
1110
1211 "github.com/Qihoo360/wayne/src/backend/client"
1312 "github.com/Qihoo360/wayne/src/backend/controllers/base"
@@ -130,75 +129,42 @@ func (c *KubeDeploymentController) Deploy() {
130129 }
131130
132131 cluster := c .Ctx .Input .Param (":cluster" )
133- cli , err := client .Client (cluster )
134- if err == nil {
135- namespaceModel , err := models .NamespaceModel .GetNamespaceByAppId (c .AppId )
136- if err != nil {
137- logs .Error ("get getNamespaceMetaData error.%v" , err )
138- c .HandleError (err )
139- return
140- }
132+ cli := c .Manager (cluster )
141133
142- clusterModel , err := models .ClusterModel .GetParsedMetaDataByName (cluster )
143- if err != nil {
144- logs .Error ("get cluster error.%v" , err )
145- c .HandleError (err )
146- return
147- }
148-
149- deploymentModel , err := models .DeploymentModel .GetParseMetaDataById (int64 (deploymentId ))
150- if err != nil {
151- logs .Error ("get deployment error.%v" , err )
152- c .HandleError (err )
153- return
154- }
134+ namespaceModel , err := models .NamespaceModel .GetNamespaceByAppId (c .AppId )
135+ if err != nil {
136+ logs .Error ("get getNamespaceMetaData error.%v" , err )
137+ c .HandleError (err )
138+ return
139+ }
155140
156- common .DeploymentPreDeploy (& kubeDeployment , deploymentModel , clusterModel , namespaceModel )
141+ clusterModel , err := models .ClusterModel .GetParsedMetaDataByName (cluster )
142+ if err != nil {
143+ logs .Error ("get cluster error.%v" , err )
144+ c .HandleError (err )
145+ return
146+ }
157147
158- publishHistory := & models.PublishHistory {
159- Type : models .PublishTypeDeployment ,
160- ResourceId : int64 (deploymentId ),
161- ResourceName : kubeDeployment .Name ,
162- TemplateId : int64 (tplId ),
163- Cluster : cluster ,
164- User : c .User .Name ,
165- }
148+ deploymentModel , err := models .DeploymentModel .GetParseMetaDataById (int64 (deploymentId ))
149+ if err != nil {
150+ logs .Error ("get deployment error.%v" , err )
151+ c .HandleError (err )
152+ return
153+ }
166154
167- defer models . PublishHistoryModel . Add ( publishHistory )
155+ common . DeploymentPreDeploy ( & kubeDeployment , deploymentModel , clusterModel , namespaceModel )
168156
169- err = checkResourceAvailable (namespaceModel , cli , & kubeDeployment , cluster )
170- if err != nil {
171- publishHistory .Status = models .ReleaseFailure
172- publishHistory .Message = err .Error ()
173- c .HandleError (err )
174- return
175- }
157+ publishHistory := & models.PublishHistory {
158+ Type : models .PublishTypeDeployment ,
159+ ResourceId : int64 (deploymentId ),
160+ ResourceName : kubeDeployment .Name ,
161+ TemplateId : int64 (tplId ),
162+ Cluster : cluster ,
163+ User : c .User .Name ,
164+ }
176165
177- // 发布资源到k8s平台
178- _ , err = deployment .CreateOrUpdateDeployment (cli , & kubeDeployment )
179- if err != nil {
180- publishHistory .Status = models .ReleaseFailure
181- publishHistory .Message = err .Error ()
182- logs .Error ("deploy deployment error.%v" , err )
183- c .HandleError (err )
184- return
185- } else {
186- publishHistory .Status = models .ReleaseSuccess
187- err = models .PublishStatusModel .Add (deploymentId , tplId , cluster , models .PublishTypeDeployment )
188- // 添加发布状态
189- if err != nil {
190- logs .Error ("add deployment deploy status error.%v" , err )
191- c .HandleError (err )
192- return
193- }
194-
195- err = models .DeploymentModel .Update (* kubeDeployment .Spec .Replicas , deploymentModel , cluster )
196- if err != nil {
197- logs .Error ("update deployment metadata error.%v" , err )
198- c .HandleError (err )
199- return
200- }
201- }
166+ defer func () {
167+ models .PublishHistoryModel .Add (publishHistory )
202168 webhook .PublishEventDeployment (c .NamespaceId , c .AppId , c .User .Name , c .Ctx .Input .IP (), webhook .UpgradeDeployment , response.Resource {
203169 Type : publishHistory .Type ,
204170 ResourceId : publishHistory .ResourceId ,
@@ -209,13 +175,45 @@ func (c *KubeDeploymentController) Deploy() {
209175 Message : publishHistory .Message ,
210176 Object : kubeDeployment ,
211177 })
212- c .Success ("ok" )
213- } else {
214- c .AbortBadRequestFormat ("Cluster" )
178+ }()
179+
180+ err = checkResourceAvailable (namespaceModel , cli .KubeClient , & kubeDeployment , cluster )
181+ if err != nil {
182+ publishHistory .Status = models .ReleaseFailure
183+ publishHistory .Message = err .Error ()
184+ c .HandleError (err )
185+ return
186+ }
187+
188+ // 发布资源到k8s平台
189+ _ , err = deployment .CreateOrUpdateDeployment (cli .Client , & kubeDeployment )
190+ if err != nil {
191+ publishHistory .Status = models .ReleaseFailure
192+ publishHistory .Message = err .Error ()
193+ logs .Error ("deploy deployment error.%v" , err )
194+ c .HandleError (err )
195+ return
215196 }
197+ publishHistory .Status = models .ReleaseSuccess
198+ err = models .PublishStatusModel .Add (deploymentId , tplId , cluster , models .PublishTypeDeployment )
199+ // 添加发布状态
200+ if err != nil {
201+ logs .Error ("add deployment deploy status error.%v" , err )
202+ c .HandleError (err )
203+ return
204+ }
205+
206+ err = models .DeploymentModel .Update (* kubeDeployment .Spec .Replicas , deploymentModel , cluster )
207+ if err != nil {
208+ logs .Error ("update deployment metadata error.%v" , err )
209+ c .HandleError (err )
210+ return
211+ }
212+
213+ c .Success ("ok" )
216214}
217215
218- func checkResourceAvailable (ns * models.Namespace , cli * kubernetes. Clientset , kubeDeployment * v1beta1.Deployment , cluster string ) error {
216+ func checkResourceAvailable (ns * models.Namespace , cli client. ResourceHandler , kubeDeployment * v1beta1.Deployment , cluster string ) error {
219217 // this namespace can't use current cluster.
220218 clusterMetas , ok := ns .MetaDataObj .ClusterMetas [cluster ]
221219 if ! ok {
0 commit comments