didata_cloud_sdk 0.3.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -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>