Merge lp:~allenap/gwacl/delete-entity into lp:gwacl

Proposed by Gavin Panella
Status: Merged
Approved by: Gavin Panella
Approved revision: 197
Merged at revision: 192
Proposed branch: lp:~allenap/gwacl/delete-entity
Merge into: lp:gwacl
Diff against target: 123 lines (+46/-0)
2 files modified
management_base.go (+15/-0)
management_base_test.go (+31/-0)
To merge this branch: bzr merge lp:~allenap/gwacl/delete-entity
Reviewer Review Type Date Requested Status
Raphaël Badin (community) Approve
Julian Edwards (community) Approve
Review via email: mp+175583@code.launchpad.net

Commit message

It is no longer an error to delete a non-existing entity through Azure's management API.

To post a comment you must log in.
Revision history for this message
Julian Edwards (julian-edwards) :
review: Approve
Revision history for this message
Raphaël Badin (rvb) wrote :

Looks good!

review: Approve

Preview Diff

[H/L] Next/Prev Comment, [J/K] Next/Prev File, [N/P] Next/Prev Hunk
1=== modified file 'management_base.go'
2--- management_base.go 2013-07-17 01:11:29 +0000
3+++ management_base.go 2013-07-18 14:26:22 +0000
4@@ -184,6 +184,9 @@
5 func (api *ManagementAPI) DeleteHostedService(serviceName string) error {
6 response, err := api.session.delete("services/hostedservices/"+serviceName, "2010-10-28")
7 if err != nil {
8+ if IsNotFoundError(err) {
9+ return nil
10+ }
11 return err
12 }
13 return api.blockUntilCompleted(response)
14@@ -214,6 +217,9 @@
15 path := "services/hostedservices/" + serviceName + "/deployments/" + deploymentName
16 response, err := api.session.delete(path, "2012-03-01")
17 if err != nil {
18+ if IsNotFoundError(err) {
19+ return nil
20+ }
21 return err
22 }
23 return api.blockUntilCompleted(response)
24@@ -268,6 +274,9 @@
25 func (api *ManagementAPI) DeleteStorageAccount(storageAccountName string) error {
26 response, err := api.session.delete("services/storageservices/"+storageAccountName, "2011-06-01")
27 if err != nil {
28+ if IsNotFoundError(err) {
29+ return nil
30+ }
31 return err
32 }
33 return api.blockUntilCompleted(response)
34@@ -312,6 +321,9 @@
35 }
36 response, err := api.session.delete(url, "2012-08-01")
37 if err != nil {
38+ if IsNotFoundError(err) {
39+ return nil
40+ }
41 return err
42 }
43 return api.blockUntilCompleted(response)
44@@ -476,6 +488,9 @@
45 }
46 response, err := api.session.delete(url, "2011-02-25")
47 if err != nil {
48+ if IsNotFoundError(err) {
49+ return nil
50+ }
51 return err
52 }
53 return api.blockUntilCompleted(response)
54
55=== modified file 'management_base_test.go'
56--- management_base_test.go 2013-07-18 03:46:50 +0000
57+++ management_base_test.go 2013-07-18 14:26:22 +0000
58@@ -541,6 +541,12 @@
59 assertDeleteHostedServiceRequest(c, api, hostedServiceName, (*recordedRequests)[0])
60 }
61
62+func (suite *managementBaseAPISuite) TestDeleteHostedServiceWhenServiceDoesNotExist(c *C) {
63+ rigFixedResponseDispatcher(&x509Response{StatusCode: http.StatusNotFound})
64+ err := makeAPI(c).DeleteHostedService("hosted-service-name")
65+ c.Assert(err, IsNil)
66+}
67+
68 func (suite *managementBaseAPISuite) TestAddDeployment(c *C) {
69 api := makeAPI(c)
70 recordedRequests := setUpDispatcher("operationID")
71@@ -576,6 +582,12 @@
72 assertDeleteDeploymentRequest(c, api, hostedServiceName, deploymentName, (*recordedRequests)[0])
73 }
74
75+func (suite *managementBaseAPISuite) TestDeleteDeploymentWhenDeploymentDoesNotExist(c *C) {
76+ rigFixedResponseDispatcher(&x509Response{StatusCode: http.StatusNotFound})
77+ err := makeAPI(c).DeleteDeployment("hosted-service-name", "deployment-name")
78+ c.Assert(err, IsNil)
79+}
80+
81 var getDeploymentResponse = `
82 <?xml version="1.0"?>
83 <Deployment xmlns="http://schemas.microsoft.com/windowsazure" xmlns:i="http://www.w3.org/2001/XMLSchema-instance">
84@@ -713,6 +725,12 @@
85 checkOneRequest(c, recordedRequests, accountURL, "2011-06-01", nil, "DELETE")
86 }
87
88+func (suite *managementBaseAPISuite) TestDeleteStorageAccountWhenAccountDoesNotExist(c *C) {
89+ rigFixedResponseDispatcher(&x509Response{StatusCode: http.StatusNotFound})
90+ err := makeAPI(c).DeleteStorageAccount("account-name")
91+ c.Assert(err, IsNil)
92+}
93+
94 func (suite *managementBaseAPISuite) TestGetStorageAccountKeys(c *C) {
95 const (
96 accountName = "accountname"
97@@ -765,6 +783,12 @@
98 assertDeleteDiskRequest(c, api, diskName, (*recordedRequests)[0])
99 }
100
101+func (suite *managementBaseAPISuite) TestDeleteDiskWhenDiskDoesNotExist(c *C) {
102+ rigFixedResponseDispatcher(&x509Response{StatusCode: http.StatusNotFound})
103+ err := makeAPI(c).DeleteDisk(&DeleteDiskRequest{DiskName: "disk-name"})
104+ c.Assert(err, IsNil)
105+}
106+
107 func (suite *managementBaseAPISuite) TestDeleteDiskWithDeleteBlob(c *C) {
108 // Setting deleteBlob=true should append comp=media as a url query value.
109 deleteDiskInterval = time.Nanosecond
110@@ -968,6 +992,13 @@
111 checkOneRequest(c, &recordedRequests, expectedURL, "2011-02-25", nil, "DELETE")
112 }
113
114+func (suite *managementBaseAPISuite) TestDeleteAffinityGroupWhenGroupDoesNotExist(c *C) {
115+ rigFixedResponseDispatcher(&x509Response{StatusCode: http.StatusNotFound})
116+ request := DeleteAffinityGroupRequest{Name: "groupname"}
117+ err := makeAPI(c).DeleteAffinityGroup(&request)
118+ c.Assert(err, IsNil)
119+}
120+
121 func makeNetworkConfiguration() *NetworkConfiguration {
122 return &NetworkConfiguration{
123 XMLNS: XMLNS_NC,

Subscribers

People subscribed via source and target branches

to all changes: