didata_cloud_sdk 0.3.1

Sign up to get free protection for your applications and to get access to all the features.
@@ -0,0 +1,24 @@
1
+ Request
2
+ -------
3
+ 'pageSize=50'
4
+ 'pageNumber=3' If the value supplied exceeds the number of pages for the request, the last page will be returned.
5
+ 'orderBy=location,created.DESCENDING' Means “sort first by location ascending, then by created descending”.
6
+
7
+ Response
8
+ --------
9
+ totalCount
10
+ pageCount
11
+ pageNumber
12
+ pageSize
13
+
14
+ Filtering
15
+ ---------
16
+ <fieldName>[.comparativeOperator]=<value>
17
+ '&location=NA1' location equals NA1
18
+ '&location=NA1&location=NA2' location “NA1” or in location “NA2”.
19
+
20
+
21
+ client.page_size = 10
22
+ client.page_number = 1
23
+ client.order_by = 'location,created.DESCENDING'
24
+ client.filter = {location: %w(NA1 NA2)}
data/doc/schemas.txt ADDED
@@ -0,0 +1,10 @@
1
+ /schemas/datacenter
2
+ /schemas/directory
3
+ /schemas/general
4
+ /schemas/multigeo
5
+ /schemas/network
6
+ /schemas/organization
7
+ /schemas/server
8
+ /schemas/storage
9
+ /schemas/vip
10
+ /schemas/vips
data/doc/sections.txt ADDED
@@ -0,0 +1,101 @@
1
+ 2.1. Get My Account Details
2
+ 2.2. Add Sub-Administrator Account
3
+ 2.3. Update Administrator Account
4
+ 2.4. Delete Sub-Administrator Account
5
+ 2.5. List Accounts
6
+ 2.6. List Data Centers With Parameters
7
+ 2.7. List Multi-Geography Data Centers With Key
8
+ 2.8. List Software Labels
9
+ 3.1. List OS Server Images
10
+ 3.2. List OS Server Images with Software Labels in Location
11
+ 3.3. List Deployed Customer Images
12
+ 3.4. List Deployed Customer Images with Software Labels in Location
13
+ 3.5. List Pending Deployment Customer Images
14
+ 3.6. List Pending Deployment Customer Images in Location
15
+ 3.7. Does Image Name Exist?
16
+ 3.8. Get Server Image
17
+ 3.9. Delete Customer Server Image
18
+ 3.10. Modify Customer Server Image
19
+ 3.11. Clean Failed Customer Image
20
+ 4.1. List OVF Packages
21
+ 4.2. Import Customer Image
22
+ 4.3. List Customer Image Imports in Progress
23
+ 4.4. Export Customer Image
24
+ 4.5. List Customer Image Exports in Progress
25
+ 4.6. List Customer Image Export History
26
+ 4.7. Copy Customer Image to Data Center
27
+ 4.8. List Customer Image Copying in Progress
28
+ 4.9. Copy OVF Package from Remote Geo
29
+ 4.10. List Remote OVF Package Copying in Progress
30
+ 4.11. List Remote OVF Package Copy History
31
+ 5.1. List Servers (With Parameters)
32
+ 5.2. Clean Failed Server Deployment
33
+ 5.3. Deploy Server
34
+ 5.4. Delete Server
35
+ 5.5. Modify Server
36
+ 5.6. Start Server
37
+ 5.7. Shutdown Server (Graceful Stop)
38
+ 5.8. Power Off Server
39
+ 5.9. Reboot Server
40
+ 5.10. Reset Server
41
+ 5.11. Update VMware Tools
42
+ 5.12. Add Storage to Server
43
+ 5.13. Remove Storage from Server
44
+ 5.14. Change Server Disk Speed
45
+ 5.15. Clone Server to Create Customer Image
46
+ 5.16. Create Server Anti-Affinity Rule
47
+ 5.17. List Server Anti-Affinity Rules
48
+ 5.18. Delete Server Anti-Affinity Rule
49
+ 6.1. List Networks
50
+ 6.2. List Networks with Location
51
+ 6.3. List Networks in Location
52
+ 6.4. Get Network Details
53
+ 6.5. Create Network
54
+ 6.6. Create Network with Location
55
+ 6.7. Delete Network
56
+ 6.8. Modify Network
57
+ 6.9. List Deployed Servers on Network with Disks
58
+ 6.10. List Pending Deployment Servers on Network with Disks
59
+ 6.11. List ACL Rules
60
+ 6.12. Create ACL Rule
61
+ 6.13. List NAT Rules
62
+ 6.14. Create NAT rule
63
+ 6.15. Delete NAT rule
64
+ 6.16. Get Network Configuration
65
+ 6.17. Get Network Configuration with Location
66
+ 6.18. Reserve Public IP Block with Size
67
+ 6.19. Release Public IP Block
68
+ 6.20. Set Server to VIP connectivity for Public IP Block
69
+ 6.21. Multicast
70
+ 7.1. List Real Servers
71
+ 7.2. Create Real Server
72
+ 7.3. Delete Real Server
73
+ 7.4. Modify Real Server
74
+ 7.5. List Probes
75
+ 7.6. Create Probe
76
+ 7.7. Modify Probe
77
+ 7.8. Delete Probe
78
+ 7.9. List Server Farms
79
+ 7.10. Get Server Farm Details
80
+ 7.11. Create Server Farm
81
+ 7.12. Delete Server Farm
82
+ 7.13. Add Real Server to Server Farm
83
+ 7.14. Remove Real Server from Server Farm
84
+ 7.15. Add Probe to Server Farm
85
+ 7.16. Remove Probe from Server Farm
86
+ 7.17. Modify Server Farm Predictor
87
+ 7.18. List Persistence Profiles
88
+ 7.19. Create Persistence Profile
89
+ 7.20. Delete Persistence Profile
90
+ 7.21. List VIPs
91
+ 7.22. Create VIP
92
+ 7.23. Delete VIP
93
+ 7.24. Modify VIP
94
+ 8.1. Create Files Account
95
+ 8.2. List Files Accounts
96
+ 8.3. Delete Files Account
97
+ 8.4. Modify Files Account
98
+ 9.1. Summary Usage Report
99
+ 9.2. Detailed Usage Report
100
+ 9.3. Software Units Report
101
+ 9.4. Audit Log Report
data/doc/urls.txt ADDED
@@ -0,0 +1,101 @@
1
+ /base/image
2
+ /base/image/deployedWithSoftwareLabels/{location-id}
3
+ /base/image/{location-id}
4
+ /image-provider/image/db
5
+ /image-provider/image/web
6
+ /myaccount
7
+ /partner/image
8
+ /{org-id}/
9
+ /{org-id}/account
10
+ /{org-id}/account/{userName}
11
+ /{org-id}/account/{username}?delete
12
+ /{org-id}/antiAffinityRule
13
+ /{org-id}/antiAffinityRule/{ruleid}?delete
14
+ /{org-id}/antiAffinityRule?
15
+ /{org-id}/auditlog?startDate=YYYYMM-DD&endDate=YYYY-MM-DD
16
+ /{org-id}/copyCustomerImage
17
+ /{org-id}/datacenter
18
+ /{org-id}/datacenterWithDiskSpeed?
19
+ /{org-id}/datacenterWithLimits
20
+ /{org-id}/geo
21
+ /{org-id}/image List Customer Server Images [DEPRECATED]
22
+ /{org-id}/image/deployed
23
+ /{org-id}/image/deployed/{locationid}
24
+ /{org-id}/image/deployedWithSoftwareLabels/{location-id}
25
+ /{org-id}/image/nameExists
26
+ /{org-id}/image/pendingDeploy
27
+ /{org-id}/image/pendingDeploy/{location-id}
28
+ /{org-id}/image/{image-id}
29
+ /{org-id}/image/{image-id}?clean
30
+ /{org-id}/image/{image-id}?delete
31
+ /{org-id}/imageExport
32
+ /{org-id}/imageExportHistory?count=n
33
+ /{org-id}/imageImport
34
+ /{org-id}/multigeo
35
+ /{org-id}/network
36
+ /{org-id}/network/{net-id}
37
+ /{org-id}/network/{net-id}/aclrule
38
+ /{org-id}/network/{net-id}/natrule
39
+ /{org-id}/network/{netid}/aclrule/{acl-id}?delete
40
+ /{org-id}/network/{netid}/publicip?reserveNew
41
+ /{org-id}/network/{network-id}
42
+ /{org-id}/network/{network-id}/vip
43
+ /{org-id}/network/{networkid}/aclrule
44
+ /{org-id}/network/{networkid}/config
45
+ /{org-id}/network/{networkid}/natrule/{natrule-id}?delete
46
+ /{org-id}/network/{networkid}/persistenceProfile
47
+ /{org-id}/network/{networkid}/persistenceProfile/{persistence-profile-id}?delete
48
+ /{org-id}/network/{networkid}/probe
49
+ /{org-id}/network/{networkid}/probe/{probe-id}
50
+ /{org-id}/network/{networkid}/probe/{probe-id}?delete
51
+ /{org-id}/network/{networkid}/publicip/{ipblock-id}
52
+ /{org-id}/network/{networkid}/publicip/{ipblock-id}?release
53
+ /{org-id}/network/{networkid}/publicip?reserveNewWithSize
54
+ /{org-id}/network/{networkid}/realServer
55
+ /{org-id}/network/{networkid}/realServer/{rserver-id}
56
+ /{org-id}/network/{networkid}/realServer/{rserver-id}?delete
57
+ /{org-id}/network/{networkid}/server
58
+ /{org-id}/network/{networkid}/server/deployed
59
+ /{org-id}/network/{networkid}/server/deployedWithDisks
60
+ /{org-id}/network/{networkid}/server/deployedWithSoftwareLabels
61
+ /{org-id}/network/{networkid}/server/deployedWithStatus
62
+ /{org-id}/network/{networkid}/server/pendingDeploy
63
+ /{org-id}/network/{networkid}/server/pendingDeployWithDisks
64
+ /{org-id}/network/{networkid}/serverFarm
65
+ /{org-id}/network/{networkid}/serverFarm/{server-farm-id}
66
+ /{org-id}/network/{networkid}/serverFarm/{server-farm-id}/addProbe
67
+ /{org-id}/network/{networkid}/serverFarm/{server-farm-id}/addRealServer
68
+ /{org-id}/network/{networkid}/serverFarm/{server-farm-id}/removeProbe
69
+ /{org-id}/network/{networkid}/serverFarm/{server-farm-id}/removeRealServer
70
+ /{org-id}/network/{networkid}/serverFarm/{server-farm-id}?delete
71
+ /{org-id}/network/{networkid}/vip/{vip-id}
72
+ /{org-id}/network/{networkid}/vip/{vip-id}?delete
73
+ /{org-id}/network/{networkid}?delete
74
+ /{org-id}/networkWithLocation
75
+ /{org-id}/networkWithLocation/{locationid}
76
+ /{org-id}/networkWithLocation/{networkid}/config
77
+ /{org-id}/ovfPackage
78
+ /{org-id}/remoteOvfPackageCopy
79
+ /{org-id}/remoteOvfPackageCopyHistory?
80
+ /{org-id}/server
81
+ /{org-id}/server/deployed
82
+ /{org-id}/server/pendingDeploy
83
+ /{org-id}/server/{server-id}
84
+ /{org-id}/server/{server-id}?clean
85
+ /{org-id}/server/{server-id}?delete
86
+ /{org-id}/server/{server-id}?reboot
87
+ /{org-id}/server/{server-id}?reset
88
+ /{org-id}/server/{server-id}?start
89
+ /{org-id}/server/{server-id}?stop
90
+ /{org-id}/server/{serverid}/disk/{disk-id}/changeSpeed
91
+ /{org-id}/server/{serverid}/disk/{disk-id}?delete
92
+ /{org-id}/server/{serverid}?addLocalStorage&amount=10
93
+ /{org-id}/server/{serverid}?poweroff
94
+ /{org-id}/server/{serverid}?restart
95
+ /{org-id}/server/{serverid}?shutdown
96
+ /{org-id}/server/{serverid}?updateVMwareTools
97
+ /{org-id}/serverWithState
98
+ /{org-id}/softwarelabel
99
+ /{org-id}/storageAccount
100
+ /{org-id}/storageAccount/<filesaccount-username>
101
+ /{org-id}/storageAccount/<filesaccount-username>?delete
@@ -0,0 +1,13 @@
1
+ module Opsource::API
2
+ class Account < Core
3
+ def myaccount()
4
+ endpoint "/myaccount"
5
+ get
6
+ end
7
+
8
+ def list()
9
+ org_endpoint "/account"
10
+ get
11
+ end
12
+ end
13
+ end
@@ -0,0 +1,127 @@
1
+ module Opsource::API
2
+ class Core
3
+ attr_reader :client
4
+ def initialize(client)
5
+ @client = client
6
+ end
7
+
8
+
9
+ ### client methods
10
+
11
+ def log(*args)
12
+ @client.log(*args)
13
+ end
14
+
15
+ def org_id
16
+ @client.org_id
17
+ end
18
+
19
+
20
+ ### request options
21
+
22
+ def endpoint(e)
23
+ @endpoint = e
24
+ end
25
+
26
+ def org_endpoint(e)
27
+ endpoint("/#{org_id}" + e)
28
+ end
29
+
30
+ def query_params(q)
31
+ @query_params = q
32
+ end
33
+
34
+ def xml_params(x)
35
+ @xml_params = x
36
+ end
37
+
38
+ def simple_params(x)
39
+ @simple_params = x
40
+ end
41
+
42
+ ### perform request
43
+
44
+ def get
45
+ perform :get
46
+ end
47
+
48
+ def post
49
+ perform :post
50
+ end
51
+
52
+ def get_simple
53
+ perform :get, true
54
+ end
55
+
56
+ def post_simple
57
+ perform :post, true
58
+ end
59
+
60
+ #do not parse response if simple
61
+ #if simple, post body is also simple...
62
+ def perform(method, simple=false)
63
+ if simple
64
+ request = @client.build_request(method, @endpoint, request_query_string, request_simple_body, false)
65
+ else
66
+ request = @client.build_request(method, @endpoint, request_query_string, request_xml_body)
67
+ end
68
+ response = @client.perform_request(request)
69
+
70
+ @client.log_response(request, response)
71
+
72
+ # return parsed object if it's good
73
+ if response.success?
74
+ if simple
75
+ result = response.body
76
+ else
77
+ result = @client.parse_response_xml_body(response.body)
78
+ if result['total_count']
79
+ log "#{result['total_count']} total", :yellow, :bold
80
+ result.delete('page_size')
81
+ result.delete('total_count')
82
+ result.delete('page_count')
83
+ result.delete('page_number')
84
+ end
85
+ # unwind some arrays of elements
86
+ result.values.count == 1 ? result.values.first : result
87
+ end
88
+ else
89
+ {}
90
+ end
91
+ end
92
+
93
+ def single(results)
94
+ if results.is_a? Array
95
+ results.first
96
+ else
97
+ results
98
+ end
99
+ end
100
+
101
+
102
+ ### build request
103
+
104
+ def request_query_string
105
+ fparams = @client.filter_params || {}
106
+ qparams = @query_params || {}
107
+ params = fparams.merge(qparams)
108
+ @client.url_query(params) if params.present?
109
+ end
110
+
111
+ def request_xml_body
112
+ return if @xml_params.blank?
113
+ schema = @xml_params.delete(:schema)
114
+ tag = @xml_params.delete(:tag)
115
+
116
+ body = @client.build_request_xml_body(schema, tag, @xml_params)
117
+ log(body, :green)
118
+ body
119
+ end
120
+ def request_simple_body
121
+ return if @simple_params.blank?
122
+ body = @client.build_request_simple_body(@simple_params)
123
+ log(body, :green)
124
+ body
125
+ end
126
+ end
127
+ end
@@ -0,0 +1,8 @@
1
+ module Opsource::API
2
+ class Directory < Core
3
+ def data_center_list
4
+ org_endpoint "/datacenterWithDiskSpeed"
5
+ get
6
+ end
7
+ end
8
+ end
@@ -0,0 +1,24 @@
1
+ module Opsource::API
2
+ class Image < Core
3
+ def server_list
4
+ endpoint '/base/image'
5
+ get
6
+ end
7
+
8
+ def deployed_list(options = {})
9
+ endpoint "/#{org_id}/image/deployed"
10
+ query_params options
11
+ get
12
+ end
13
+
14
+ def show_by_name(name, options = {})
15
+ options[:name] = name
16
+ single(deployed_list(options))
17
+ end
18
+
19
+ def show(image_id)
20
+ endpoint "/#{org_id}/image/#{image_id}"
21
+ get
22
+ end
23
+ end
24
+ end
@@ -0,0 +1,65 @@
1
+ module Opsource::API
2
+ class Network < Core
3
+ def list
4
+ org_endpoint '/network'
5
+ get
6
+ end
7
+
8
+ def create(name, description="", datacenter=@client.datacenter)
9
+ org_endpoint "/networkWithLocation"
10
+ xml_params(schema: "network", tag: "NewNetworkWithLocation", name: name, description: description, location: datacenter)
11
+ post
12
+ end
13
+
14
+ def list_with_location
15
+ org_endpoint "/networkWithLocation"
16
+ get
17
+ end
18
+
19
+ def list_in_location(location_id)
20
+ org_endpoint "/networkWithLocation/#{location_id}"
21
+ get
22
+ end
23
+
24
+ def show(network_id)
25
+ list_with_location.find {|n| n.id == network_id}
26
+ end
27
+
28
+ def show_by_name(name)
29
+ list_with_location.find {|n| n.name == name}
30
+ end
31
+
32
+ def natrule_list(network_id)
33
+ org_endpoint "/network/#{network_id}/natrule"
34
+ get
35
+ end
36
+
37
+ # name = "10.147.15.11", source_ip = "10.147.15.11"
38
+ def natrule_create(network_id, name, source_ip)
39
+ org_endpoint "/network/#{network_id}/natrule"
40
+ xml_params(schema: "network", tag: "NatRule", name: name, source_ip: source_ip)
41
+ post
42
+ end
43
+
44
+ def natrule_delete(network_id, natrule_id)
45
+ org_endpoint "/network/#{network_id}/natrule/#{natrule_id}?delete"
46
+ get
47
+ end
48
+
49
+ def aclrule_list(network_id)
50
+ org_endpoint "/network/#{network_id}/aclrule"
51
+ get
52
+ end
53
+
54
+ def aclrule_delete(network_id, aclrule_id)
55
+ org_endpoint "/network/#{network_id}/aclrule/#{aclrule_id}?delete"
56
+ get
57
+ end
58
+
59
+ def aclrule_create(network_id, name, position, inbound, protocol, port, allow)
60
+ org_endpoint "/network/#{network_id}/aclrule"
61
+ xml_params(schema: "network", tag: "AclRule", name: name, position: position, action: (allow ? "PERMIT" : "DENY"), protocol: protocol, source_ip_range: {}, destination_ip_range: {}, port_range: {type: "EQUAL_TO", port1: port}, type: (inbound ? "OUTSIDE_ACL" : "INSIDE_ACL"))
62
+ post
63
+ end
64
+ end
65
+ end
@@ -0,0 +1,24 @@
1
+ module Opsource::API
2
+ class Report < Core
3
+ def auditlog(start_date, end_date)
4
+ start = start_date.strftime("%Y-%m-%d")
5
+ stop = end_date.strftime("%Y-%m-%d")
6
+ org_endpoint "/auditlog?startDate=#{start}&endDate=#{stop}"
7
+ get_simple
8
+ end
9
+
10
+ def summary_usage(start_date, end_date)
11
+ start = start_date.strftime("%Y-%m-%d")
12
+ stop = end_date.strftime("%Y-%m-%d")
13
+ org_endpoint "/report/usage?startDate=#{start}&endDate=#{stop}"
14
+ get_simple
15
+ end
16
+
17
+ def detailed_usage(start_date, end_date)
18
+ start = start_date.strftime("%Y-%m-%d")
19
+ stop = end_date.strftime("%Y-%m-%d")
20
+ org_endpoint "/report/usageDetailed?startDate=#{start}&endDate=#{stop}"
21
+ get_simple
22
+ end
23
+ end
24
+ end
@@ -0,0 +1,185 @@
1
+ module Opsource::API
2
+ class Server < Core
3
+
4
+ # id
5
+ # location
6
+ # networkId
7
+ # sourceImageId
8
+ # deployed boolean
9
+ # name -- Matched against names of servers
10
+ # created.MIN=20120901T00:00:00Z
11
+ # created.MAX=20120901T00:00:00Z
12
+ # state
13
+ # "NORMAL",
14
+ # "PENDING_ADD",
15
+ # "PENDING_CHANGE",
16
+ # "PENDING_DELETE",
17
+ # "FAILED_ADD",
18
+ # "FAILED_DELETE",
19
+ # "PENDING_CLEAN" and
20
+ # "REQUIRES_SUPPORT".
21
+ # order_by: started, operatingSystemId, state and all other
22
+ def list(options = {})
23
+ org_endpoint "/serverWithState"
24
+ query_params options
25
+ get
26
+ end
27
+
28
+ def list_deployed_with_disks(network_id, options = {})
29
+ org_endpoint "/network/#{network_id}/server/deployedWithDisks"
30
+ query_params options
31
+ get
32
+ end
33
+
34
+ def show(server_id, options = {})
35
+ options[:id] = server_id
36
+ single(list(options))
37
+ end
38
+
39
+ def show_by_name(name, options = {})
40
+ options[:name] = name
41
+ single(list(options))
42
+ end
43
+
44
+ def show_by_ip(ip, options = {})
45
+ options[:private_ip] = ip
46
+ single(list(options))
47
+ end
48
+
49
+ def show_with_disks(network_id, server_id, options = {})
50
+ list_deployed_with_disks(network_id, options).find {|s| s.id == server_id}
51
+ end
52
+
53
+ def create(name, description, network_id, image_id, administrator_password=@client.default_password)
54
+ org_endpoint "/server"
55
+ xml_params(
56
+ tag: "Server",
57
+ schema: "server",
58
+ name: name,
59
+ description: description,
60
+ vlan_resource_path: "/oec/#{org_id}/network/#{network_id}",
61
+ image_resource_path: "/oec/base/image/#{image_id}",
62
+ is_started: 'true',
63
+ administrator_password: administrator_password
64
+ )
65
+ post
66
+ end
67
+
68
+ def delete(server_id)
69
+ org_endpoint "/server/#{server_id}?delete"
70
+ get
71
+ end
72
+
73
+ # memory in MB, ust be multiple of 1024
74
+ def modify(server_id, name = nil, description = nil, cpu_count = nil, memory = nil)
75
+ query_params(
76
+ name: name,
77
+ description: description,
78
+ cpu_count: cpu_count,
79
+ memory: memory
80
+ )
81
+ org_endpoint "/server/#{server_id}"
82
+ post
83
+ end
84
+
85
+ def start(server_id)
86
+ org_endpoint "/server/#{server_id}?start"
87
+ get
88
+ end
89
+
90
+ def shutdown(server_id)
91
+ org_endpoint "/server/#{server_id}?shutdown"
92
+ get
93
+ end
94
+
95
+ def poweroff(server_id)
96
+ org_endpoint "/server/#{server_id}?poweroff"
97
+ get
98
+ end
99
+
100
+ def reboot(server_id)
101
+ org_endpoint "/server/#{server_id}?reboot"
102
+ get
103
+ end
104
+
105
+ def reset(server_id)
106
+ org_endpoint "/server/#{server_id}?reset"
107
+ get
108
+ end
109
+
110
+ # amount is # of GBs
111
+ def add_storage(server_id, amount)
112
+ org_endpoint "/server/#{server_id}?addLocalStorage"
113
+ query_params(amount: amount)
114
+ get
115
+ end
116
+
117
+ def remove_storage(server_id, disk_id)
118
+ org_endpoint "/server/#{server_id}/disk/#{disk_id}?delete"
119
+ get
120
+ end
121
+
122
+ end
123
+ end
124
+
125
+ #### ServersWithState
126
+ # <ServersWithState
127
+ # xmlns="http://oec.api.opsource.net/schemas/server"
128
+ # totalCount="320"
129
+ # pageCount="250"
130
+ # pageNumber="1"
131
+ # pageSize="250">
132
+ # <!--Zero or more repetitions:-->
133
+ # <serverWithState id="c325fe04-7711-4968-962e-c88784eb2" location="NA1">
134
+ # <name>Production LAMP Server</name>
135
+ # <!--Optional:-->
136
+ # <description>Main web application server.</description>
137
+ # <operatingSystem id="REDHAT564" displayName="REDHAT5/64" type="UNIX"/>
138
+ # <cpuCount>2</cpuCount>
139
+ # <memoryMb>4096</memoryMb>
140
+ # <!-- one or more repetitions:-->
141
+ # <disk id="x445fe05-7113-4988-9d2e-cbjt78eb2" scsiId="0" sizeGb="50"
142
+ # speed="STANDARD" state="NORMAL"/>
143
+ # <disk id="ef49974c-87d0-400f-aa32-ee43559fdb1b" scsiId="1" sizeGb="150"
144
+ # speed="STANDARD" state="NORMAL"/>
145
+ # <!--Zero or more repetitions:-->
146
+ # <softwareLabel>REDHAT5ES64</softwareLabel>
147
+ # <!--Optional:-->
148
+ # <sourceImageId>5a18d6f0-eaca-11e1-8340-d93da27669ab</sourceImageId>
149
+ # <networkId>xb632974c-87d0-400faa32-hb43559flk765</networkId>
150
+ # © 2013 Dimension Data Cloud Solutions
151
+ # 69
152
+ # <machineName>10-157-3-125</machineName>
153
+ # <privateIp>10.157.3.125</privateIp>
154
+ # <!--Optional:-->
155
+ # <publicIp>206.80.63.208</publicIp>
156
+ # <created>2012-07-02T10:43:31.000Z</created>
157
+ # <isStarted>false</isStarted>
158
+ # <isDeployed>true</isDeployed>
159
+ # <state>PENDING_CHANGE</state>
160
+ # <!--Zero or more repetitions:-->
161
+ # <machineStatus name="vmwareToolsRunningStatus">
162
+ # <value>RUNNING</value>
163
+ # </machineStatus>
164
+ # <!--Optional:-->
165
+ # <status>
166
+ # <action>START_SERVER</action>
167
+ # <requestTime>2012-09-26T08:36:28</requestTime>
168
+ # <userName>btaylor</userName>
169
+ # <!--Optional:-->
170
+ # <numberOfSteps>3</numberOfSteps>
171
+ # <!--Optional:-->
172
+ # <updateTime>2012-09-26T08:37:28</updateTime>
173
+ # <!--Optional:-->
174
+ # <step>
175
+ # <name>Waiting for operation</name>
176
+ # <number>3</number>
177
+ # <!--Optional:-->
178
+ # <percentComplete>3</percentComplete>
179
+ # </step>
180
+ # <!--Optional: (present only if the last operation failed and left
181
+ # the server in a locked state) -->
182
+ # <failureReason>Message Value</failureReason>
183
+ # </status>
184
+ # </serverWithState>
185
+ # </ServersWithState>