vcloud-edge_gateway 0.0.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.
Files changed (58) hide show
  1. data/.gitignore +16 -0
  2. data/Gemfile +9 -0
  3. data/LICENSE.txt +20 -0
  4. data/README.md +160 -0
  5. data/Rakefile +23 -0
  6. data/bin/vcloud-edge +12 -0
  7. data/jenkins.sh +11 -0
  8. data/lib/vcloud/config_loader.rb +27 -0
  9. data/lib/vcloud/config_validator.rb +207 -0
  10. data/lib/vcloud/edge_gateway/configuration_differ.rb +17 -0
  11. data/lib/vcloud/edge_gateway/configuration_generator/firewall_service.rb +63 -0
  12. data/lib/vcloud/edge_gateway/configuration_generator/id_ranges.rb +10 -0
  13. data/lib/vcloud/edge_gateway/configuration_generator/load_balancer_service.rb +243 -0
  14. data/lib/vcloud/edge_gateway/configuration_generator/nat_service.rb +54 -0
  15. data/lib/vcloud/edge_gateway/edge_gateway_configuration.rb +41 -0
  16. data/lib/vcloud/edge_gateway/version.rb +6 -0
  17. data/lib/vcloud/edge_gateway.rb +32 -0
  18. data/lib/vcloud/edge_gateway_services.rb +26 -0
  19. data/lib/vcloud/schema/edge_gateway.rb +15 -0
  20. data/lib/vcloud/schema/firewall_service.rb +39 -0
  21. data/lib/vcloud/schema/load_balancer_service.rb +129 -0
  22. data/lib/vcloud/schema/nat_service.rb +35 -0
  23. data/scripts/generate_fog_conf_file.sh +6 -0
  24. data/spec/erb_helper.rb +11 -0
  25. data/spec/integration/edge_gateway/data/firewall_config.yaml.erb +17 -0
  26. data/spec/integration/edge_gateway/data/firewall_config_updated_rule.yaml.erb +17 -0
  27. data/spec/integration/edge_gateway/data/firewall_rule_order_test.yaml.erb +24 -0
  28. data/spec/integration/edge_gateway/data/hairpin_nat_config.yaml.erb +13 -0
  29. data/spec/integration/edge_gateway/data/incorrect_firewall_config.yaml +14 -0
  30. data/spec/integration/edge_gateway/data/nat_and_firewall_config.yaml.erb +32 -0
  31. data/spec/integration/edge_gateway/data/nat_config.yaml.erb +17 -0
  32. data/spec/integration/edge_gateway/edge_gateway_services_spec.rb +132 -0
  33. data/spec/integration/edge_gateway/firewall_service_spec.rb +201 -0
  34. data/spec/integration/edge_gateway/nat_service_spec.rb +208 -0
  35. data/spec/spec_helper.rb +26 -0
  36. data/spec/vcloud/config_loader_spec.rb +112 -0
  37. data/spec/vcloud/config_validator_spec.rb +570 -0
  38. data/spec/vcloud/data/basic_preamble_test.erb +8 -0
  39. data/spec/vcloud/data/basic_preamble_test.erb.OUT +8 -0
  40. data/spec/vcloud/data/working.json +21 -0
  41. data/spec/vcloud/data/working.yaml +22 -0
  42. data/spec/vcloud/data/working_with_defaults.yaml +25 -0
  43. data/spec/vcloud/edge_gateway/configuration_differ_spec.rb +131 -0
  44. data/spec/vcloud/edge_gateway/configuration_generator/data/load_balancer_http-input.yaml +41 -0
  45. data/spec/vcloud/edge_gateway/configuration_generator/data/load_balancer_http-output.yaml +93 -0
  46. data/spec/vcloud/edge_gateway/configuration_generator/data/load_balancer_https-input.yaml +39 -0
  47. data/spec/vcloud/edge_gateway/configuration_generator/data/load_balancer_https-output.yaml +92 -0
  48. data/spec/vcloud/edge_gateway/configuration_generator/data/load_balancer_mixed_complex-input.yaml +65 -0
  49. data/spec/vcloud/edge_gateway/configuration_generator/data/load_balancer_mixed_complex-output.yaml +94 -0
  50. data/spec/vcloud/edge_gateway/configuration_generator/firewall_service_spec.rb +378 -0
  51. data/spec/vcloud/edge_gateway/configuration_generator/load_balancer_service_spec.rb +233 -0
  52. data/spec/vcloud/edge_gateway/configuration_generator/nat_service_spec.rb +360 -0
  53. data/spec/vcloud/edge_gateway/edge_gateway_configuration_spec.rb +182 -0
  54. data/spec/vcloud/edge_gateway/firewall_schema_validation_spec.rb +45 -0
  55. data/spec/vcloud/edge_gateway/load_balancer_schema_validation_spec.rb +153 -0
  56. data/spec/vcloud/edge_gateway/nat_schema_validation_spec.rb +93 -0
  57. data/vcloud-edge_gateway.gemspec +32 -0
  58. metadata +252 -0
@@ -0,0 +1,21 @@
1
+ {
2
+ "vapps":[{
3
+ "name":"vapp-vcloud-tools-tests",
4
+ "vdc_name":"VDC_NAME",
5
+ "catalog":"CATALOG_NAME",
6
+ "catalog_item":"CATALOG_ITEM",
7
+ "vm":{
8
+ "hardware_config":{"memory":"4096", "cpu":"2"},
9
+ "extra_disks":[{"size":"8192"}],
10
+ "network_connections":[
11
+ {"name":"Default",
12
+ "ip_address":"192.168.2.10"},
13
+ {"name":"NetworkTest2",
14
+ "ip_address":"192.168.1.10"}
15
+ ],
16
+ "bootstrap":{"script_path":"spec/data/basic_preamble_test.erb",
17
+ "vars":{"message":"hello world"}},
18
+ "metadata":{}
19
+ }
20
+ }]
21
+ }
@@ -0,0 +1,22 @@
1
+ ---
2
+ vapps:
3
+ - name: vapp-vcloud-tools-tests
4
+ vdc_name: VDC_NAME
5
+ catalog: CATALOG_NAME
6
+ catalog_item: CATALOG_ITEM
7
+ vm:
8
+ hardware_config:
9
+ memory: '4096'
10
+ cpu: '2'
11
+ extra_disks:
12
+ - size: '8192'
13
+ network_connections:
14
+ - name: Default
15
+ ip_address: 192.168.2.10
16
+ - name: NetworkTest2
17
+ ip_address: 192.168.1.10
18
+ bootstrap:
19
+ script_path: 'spec/data/basic_preamble_test.erb'
20
+ vars:
21
+ message: 'hello world'
22
+ metadata: {}
@@ -0,0 +1,25 @@
1
+ ---
2
+ anchors:
3
+ - &VDC_NAME dcs-dev
4
+
5
+ vapps:
6
+ - name: vapp-vcloud-tools-tests
7
+ vdc_name: *VDC_NAME
8
+ catalog: CATALOG_NAME
9
+ catalog_item: CATALOG_ITEM
10
+ vm:
11
+ hardware_config:
12
+ memory: '4096'
13
+ cpu: '2'
14
+ extra_disks:
15
+ - size: '8192'
16
+ network_connections:
17
+ - name: Default
18
+ ip_address: 192.168.2.10
19
+ - name: NetworkTest2
20
+ ip_address: 192.168.1.10
21
+ bootstrap:
22
+ script_path: 'spec/data/basic_preamble_test.erb'
23
+ vars:
24
+ message: 'hello world'
25
+ metadata: {}
@@ -0,0 +1,131 @@
1
+ require 'spec_helper'
2
+
3
+ module Vcloud
4
+ module EdgeGateway
5
+ describe ConfigurationDiffer do
6
+
7
+ test_cases = [
8
+ {
9
+ title: 'should return an empty array for two identical empty Hashes',
10
+ src: { },
11
+ dest: { },
12
+ output: [],
13
+ },
14
+
15
+ {
16
+ title: 'should return an empty array for two identical simple Hashes',
17
+ src: { testing: 'testing', one: 1, two: 'two', three: "3" },
18
+ dest: { testing: 'testing', one: 1, two: 'two', three: "3" },
19
+ output: [],
20
+ },
21
+
22
+ {
23
+ title: 'should return an empty array for two identical deep Hashes',
24
+ src: { testing: 'testing', one: 1, deep: [
25
+ { foo: 'bar', deeper: [ 1, 2, 3, 4, 5 ] },
26
+ { baz: 'bop', deeper: [ 6, 5, 4, 3, 2 ] },
27
+ ]},
28
+ dest: { testing: 'testing', one: 1, deep: [
29
+ { foo: 'bar', deeper: [ 1, 2, 3, 4, 5 ] },
30
+ { baz: 'bop', deeper: [ 6, 5, 4, 3, 2 ] },
31
+ ]},
32
+ output: [],
33
+ },
34
+
35
+ {
36
+ title: 'should highlight a simple addition',
37
+ src: { foo: '1' },
38
+ dest: { foo: '1', bar: '2' },
39
+ output: [["+", "bar", "2"]],
40
+ },
41
+
42
+ {
43
+ title: 'should highlight a simple subtraction',
44
+ src: { foo: '1', bar: '2' },
45
+ dest: { foo: '1' },
46
+ output: [["-", "bar", "2"]],
47
+ },
48
+
49
+ {
50
+ title: 'should highlight a deep addition',
51
+ src: { testing: 'testing', one: 1, deep: [
52
+ { foo: 'bar', deeper: [ 1, 2, 3, 4, 5 ] },
53
+ { baz: 'bop', deeper: [ 6, 5, 4, 3, 2 ] },
54
+ ]},
55
+ dest: { testing: 'testing', one: 1, deep: [
56
+ { foo: 'bar', deeper: [ 1, 2, 3, 4, 5, 6 ] },
57
+ { baz: 'bop', deeper: [ 6, 5, 4, 3, 2 ] },
58
+ ]},
59
+ output: [["+", "deep[0].deeper[5]", 6]],
60
+ },
61
+
62
+ {
63
+ title: 'should highlight a deep subtraction',
64
+ src: { testing: 'testing', one: 1, deep: [
65
+ { foo: 'bar', deeper: [ 1, 2, 3, 4, 5 ] },
66
+ { baz: 'bop', deeper: [ 6, 5, 4, 3, 2 ] },
67
+ ]},
68
+ dest: { testing: 'testing', one: 1, deep: [
69
+ { foo: 'bar', deeper: [ 1, 2, 3, 4, 5 ] },
70
+ { baz: 'bop', deeper: [ 6, 5, 3, 2 ] },
71
+ ]},
72
+ output: [["-", "deep[1].deeper[2]", 4]],
73
+ },
74
+
75
+ {
76
+ title: 'should return an empty array when hash params are reordered',
77
+ src: { one: 1, testing: 'testing', deep: [
78
+ { deeper: [ 1, 2, 3, 4, 5 ], foo: 'bar' },
79
+ { baz: 'bop', deeper: [ 6, 5, 4, 3, 2 ] },
80
+ ]},
81
+ dest: { testing: 'testing', one: 1, deep: [
82
+ { foo: 'bar', deeper: [ 1, 2, 3, 4, 5 ] },
83
+ { baz: 'bop', deeper: [ 6, 5, 4, 3, 2 ] },
84
+ ]},
85
+ output: [],
86
+ },
87
+
88
+ {
89
+ title: 'should highlight when array elements are reordered',
90
+ src: { testing: 'testing', one: 1, deep: [
91
+ { baz: 'bop', deeper: [ 6, 5, 4, 3, 2 ] },
92
+ { foo: 'bar', deeper: [ 1, 2, 3, 4, 5 ] },
93
+ ]},
94
+ dest: { testing: 'testing', one: 1, deep: [
95
+ { foo: 'bar', deeper: [ 1, 2, 3, 4, 5 ] },
96
+ { baz: 'bop', deeper: [ 6, 5, 4, 3, 2 ] },
97
+ ]},
98
+ output: [
99
+ ["+", "deep[0]", {:foo=>"bar", :deeper=>[1, 2, 3, 4, 5]}],
100
+ ["-", "deep[2]", {:foo=>"bar", :deeper=>[1, 2, 3, 4, 5]}],
101
+ ]
102
+ },
103
+
104
+ {
105
+ title: 'should highlight when deep array elements are reordered',
106
+ src: { testing: 'testing', one: 1, deep: [
107
+ { foo: 'bar', deeper: [ 1, 2, 3, 4, 5 ] },
108
+ { baz: 'bop', deeper: [ 5, 6, 4, 3, 2 ] },
109
+ ]},
110
+ dest: { testing: 'testing', one: 1, deep: [
111
+ { foo: 'bar', deeper: [ 1, 2, 3, 4, 5 ] },
112
+ { baz: 'bop', deeper: [ 6, 5, 4, 3, 2 ] },
113
+ ]},
114
+ output: [
115
+ ["+", "deep[1].deeper[0]", 6],
116
+ ["-", "deep[1].deeper[2]", 6]
117
+ ]
118
+ },
119
+
120
+ ]
121
+
122
+ test_cases.each do |test_case|
123
+ it "#{test_case[:title]}" do
124
+ differ = ConfigurationDiffer.new(test_case[:src], test_case[:dest])
125
+ expect(differ.diff).to eq(test_case[:output])
126
+ end
127
+ end
128
+
129
+ end
130
+ end
131
+ end
@@ -0,0 +1,41 @@
1
+ {
2
+ enabled: 'true', #opt
3
+ pools: [
4
+ {
5
+ name: 'web-app',
6
+ description: 'web-app',#opt
7
+ service: {
8
+ http: {
9
+ enabled: 'true', #opt, default true
10
+ algorithm: 'ROUND_ROBIN', #opt default RRB
11
+ port: 80, #req
12
+ protocol: 'HTTP', #req
13
+ health_check: {
14
+ port: '80' , #req
15
+ protocol: 'HTTP', #opt, default same as service port protocol, HTTPS => SSL
16
+ health_threshold: '1', #opt default = 2
17
+ unhealth_threshold: '6', #opt default = 3
18
+ interval: '20', #opt default 5 sec
19
+ timeout: '25' } #optional default 15sec
20
+ }
21
+ },
22
+ members: [{ ip_address: '192.168.254.100', #req
23
+ weight: '1', #opt default = 1, NB: 0 == 'disabled',
24
+ }],
25
+
26
+ }
27
+ ],
28
+ virtual_servers: [
29
+ {
30
+ name: 'router', #req
31
+ description: 'describe it', #opt
32
+ ip_address: '192.2.0.55', #req
33
+ network: 'ExternalNetwork', #req
34
+ pool: 'web-app', #req
35
+ logging: 'false', #opt, default false
36
+ service_profiles: {
37
+ http: { enabled: true, port: '80' }
38
+ },
39
+ }
40
+ ]
41
+ }
@@ -0,0 +1,93 @@
1
+ {
2
+ IsEnabled: "true",
3
+ Pool: [
4
+ {
5
+ Name: 'web-app',
6
+ Description: 'web-app',
7
+ ServicePort: [
8
+ {
9
+ IsEnabled: "true",
10
+ Protocol: "HTTP",
11
+ Algorithm: "ROUND_ROBIN",
12
+ Port: '80',
13
+ HealthCheckPort: '80',
14
+ HealthCheck:
15
+ {
16
+ Mode: "HTTP", Uri: '', HealthThreshold: '1', UnhealthThreshold: '6', Interval: '20', Timeout: '25'
17
+ }
18
+ },
19
+ {
20
+ IsEnabled: 'false',
21
+ Protocol: "HTTPS",
22
+ Algorithm: "ROUND_ROBIN",
23
+ Port: '443',
24
+ HealthCheckPort: '',
25
+ HealthCheck:
26
+ {
27
+ Mode: "SSL", HealthThreshold: '2', UnhealthThreshold: '3', Interval: '5', Timeout: '15'
28
+ }
29
+ },
30
+ {
31
+ IsEnabled: 'false',
32
+ Protocol: "TCP",
33
+ Algorithm: "ROUND_ROBIN",
34
+ Port: '',
35
+ HealthCheckPort: '',
36
+ HealthCheck:
37
+ {
38
+ Mode: "TCP", HealthThreshold: '2', UnhealthThreshold: '3', Interval: '5', Timeout: '15'
39
+ }
40
+ }
41
+ ],
42
+ Member: [
43
+ {
44
+ IpAddress: "192.168.254.100",
45
+ Weight: '1',
46
+ ServicePort:
47
+ [
48
+ {Protocol: "HTTP", Port: '', HealthCheckPort: ''},
49
+ {Protocol: "HTTPS", Port: '', HealthCheckPort: ''},
50
+ {Protocol: "TCP", Port: '', HealthCheckPort: ''},
51
+ ]
52
+ }
53
+ ]
54
+ }
55
+ ],
56
+ VirtualServer: [
57
+ {
58
+ IsEnabled: "true",
59
+ Name: "router",
60
+ Description: "describe it",
61
+ Interface: {
62
+ type: "application/vnd.vmware.vcloud.orgVdcNetwork+xml",
63
+ name: "ExternalNetwork",
64
+ href: "https://example.com/api/admin/network/12345678-1234-1234-1234-123456789012",
65
+ },
66
+ IpAddress: '192.2.0.55',
67
+ ServiceProfile:
68
+ [
69
+ {
70
+ IsEnabled: "true",
71
+ Protocol: "HTTP",
72
+ Port: "80",
73
+ Persistence: {Method: ""}
74
+ },
75
+ {
76
+ IsEnabled: "false",
77
+ Protocol: "HTTPS",
78
+ Port: "443",
79
+ Persistence: {Method: ""}
80
+ },
81
+ {
82
+ IsEnabled: "false",
83
+ Protocol: "TCP",
84
+ Port: "",
85
+ Persistence: {Method: ""}
86
+ },
87
+ ],
88
+ Logging: 'false',
89
+ Pool: 'web-app'
90
+ }
91
+ ]
92
+
93
+ }
@@ -0,0 +1,39 @@
1
+ {
2
+ enabled: 'true', #opt
3
+ pools: [
4
+ {
5
+ name: 'test-pool-1',
6
+ description: 'Our Pool description',
7
+ service: {
8
+ https: {
9
+ algorithm: 'IP_HASH',
10
+ port: 443,
11
+ protocol: 'HTTPS',
12
+ }
13
+ },
14
+ members: [
15
+ { ip_address: '10.10.10.10', },
16
+ { ip_address: '10.10.10.11', },
17
+ ],
18
+
19
+ }
20
+ ],
21
+ virtual_servers: [
22
+ {
23
+ name: 'test-vs-1',
24
+ description: 'Our VirtualServer description',
25
+ ip_address: '192.2.0.88',
26
+ network: 'ExternalNetwork',
27
+ pool: 'test-pool-1',
28
+ service_profiles: {
29
+ https: {
30
+ enabled: true,
31
+ port: '443',
32
+ persistence: {
33
+ method: 'SSL_SESSION_ID'
34
+ }
35
+ },
36
+ },
37
+ }
38
+ ]
39
+ }
@@ -0,0 +1,92 @@
1
+ ---
2
+ :IsEnabled: 'true'
3
+ :Pool:
4
+ - :Name: test-pool-1
5
+ :Description: Our Pool description
6
+ :ServicePort:
7
+ - :IsEnabled: 'false'
8
+ :Protocol: HTTP
9
+ :Algorithm: ROUND_ROBIN
10
+ :Port: '80'
11
+ :HealthCheckPort: ''
12
+ :HealthCheck:
13
+ :Mode: HTTP
14
+ :Uri: ''
15
+ :HealthThreshold: '2'
16
+ :UnhealthThreshold: '3'
17
+ :Interval: '5'
18
+ :Timeout: '15'
19
+ - :IsEnabled: 'true'
20
+ :Protocol: HTTPS
21
+ :Algorithm: IP_HASH
22
+ :Port: '443'
23
+ :HealthCheckPort: ''
24
+ :HealthCheck:
25
+ :Mode: SSL
26
+ :HealthThreshold: '2'
27
+ :UnhealthThreshold: '3'
28
+ :Interval: '5'
29
+ :Timeout: '15'
30
+ - :IsEnabled: 'false'
31
+ :Protocol: TCP
32
+ :Algorithm: ROUND_ROBIN
33
+ :Port: ''
34
+ :HealthCheckPort: ''
35
+ :HealthCheck:
36
+ :Mode: TCP
37
+ :HealthThreshold: '2'
38
+ :UnhealthThreshold: '3'
39
+ :Interval: '5'
40
+ :Timeout: '15'
41
+ :Member:
42
+ - :IpAddress: 10.10.10.10
43
+ :Weight: '1'
44
+ :ServicePort:
45
+ - :Protocol: HTTP
46
+ :Port: ''
47
+ :HealthCheckPort: ''
48
+ - :Protocol: HTTPS
49
+ :Port: ''
50
+ :HealthCheckPort: ''
51
+ - :Protocol: TCP
52
+ :Port: ''
53
+ :HealthCheckPort: ''
54
+ - :IpAddress: 10.10.10.11
55
+ :Weight: '1'
56
+ :ServicePort:
57
+ - :Protocol: HTTP
58
+ :Port: ''
59
+ :HealthCheckPort: ''
60
+ - :Protocol: HTTPS
61
+ :Port: ''
62
+ :HealthCheckPort: ''
63
+ - :Protocol: TCP
64
+ :Port: ''
65
+ :HealthCheckPort: ''
66
+ :VirtualServer:
67
+ - :IsEnabled: 'true'
68
+ :Name: test-vs-1
69
+ :Description: Our VirtualServer description
70
+ :Interface:
71
+ :type: application/vnd.vmware.vcloud.orgVdcNetwork+xml
72
+ :name: 'ExternalNetwork'
73
+ :href: https://example.com/api/admin/network/12345678-1234-1234-1234-123456789012
74
+ :IpAddress: 192.2.0.88
75
+ :ServiceProfile:
76
+ - :IsEnabled: 'false'
77
+ :Protocol: HTTP
78
+ :Port: '80'
79
+ :Persistence:
80
+ :Method: ''
81
+ - :IsEnabled: 'true'
82
+ :Protocol: HTTPS
83
+ :Port: '443'
84
+ :Persistence:
85
+ :Method: SSL_SESSION_ID
86
+ - :IsEnabled: 'false'
87
+ :Protocol: TCP
88
+ :Port: ''
89
+ :Persistence:
90
+ :Method: ''
91
+ :Logging: 'false'
92
+ :Pool: test-pool-1
@@ -0,0 +1,65 @@
1
+ {
2
+ enabled: 'true',
3
+ pools: [
4
+ {
5
+ name: 'test-pool-2',
6
+ service: {
7
+ tcp: {
8
+ algorithm: 'LEAST_CONN',
9
+ port: 8080,
10
+ health_check: {
11
+ protocol: 'TCP',
12
+ },
13
+ },
14
+ https: {
15
+ algorithm: 'ROUND_ROBIN',
16
+ health_check: {
17
+ port: 443,
18
+ protocol: 'TCP',
19
+ },
20
+ },
21
+ http: {
22
+ algorithm: 'URI',
23
+ health_check: {
24
+ port: 8081,
25
+ protocol: 'TCP',
26
+ },
27
+ },
28
+ },
29
+ members: [
30
+ { ip_address: '10.10.10.20', weight: 5 },
31
+ { ip_address: '10.10.10.21', weight: 1 },
32
+ ],
33
+
34
+ }
35
+ ],
36
+ virtual_servers: [
37
+ {
38
+ name: 'test-vs-1',
39
+ description: 'Description of VirtualServer',
40
+ ip_address: '192.2.0.88',
41
+ network: 'ExternalNetwork',
42
+ pool: 'test-pool-2',
43
+ service_profiles: {
44
+ http: {
45
+ port: '8085',
46
+ persistence: {
47
+ method: 'COOKIE',
48
+ cookie_name: 'MY_SESSION_ID',
49
+ cookie_mode: 'PREFIX',
50
+ },
51
+ },
52
+ tcp: {
53
+ port: '8082',
54
+ },
55
+ https: {
56
+ enabled: true,
57
+ port: '443',
58
+ persistence: {
59
+ method: 'SSL_SESSION_ID'
60
+ }
61
+ },
62
+ },
63
+ }
64
+ ]
65
+ }
@@ -0,0 +1,94 @@
1
+ ---
2
+ :IsEnabled: 'true'
3
+ :Pool:
4
+ - :Name: test-pool-2
5
+ :ServicePort:
6
+ - :IsEnabled: 'true'
7
+ :Protocol: HTTP
8
+ :Algorithm: URI
9
+ :Port: '80'
10
+ :HealthCheckPort: '8081'
11
+ :HealthCheck:
12
+ :Mode: TCP
13
+ :Uri: ''
14
+ :HealthThreshold: '2'
15
+ :UnhealthThreshold: '3'
16
+ :Interval: '5'
17
+ :Timeout: '15'
18
+ - :IsEnabled: 'true'
19
+ :Protocol: HTTPS
20
+ :Algorithm: ROUND_ROBIN
21
+ :Port: '443'
22
+ :HealthCheckPort: '443'
23
+ :HealthCheck:
24
+ :Mode: TCP
25
+ :Uri: ''
26
+ :HealthThreshold: '2'
27
+ :UnhealthThreshold: '3'
28
+ :Interval: '5'
29
+ :Timeout: '15'
30
+ - :IsEnabled: 'true'
31
+ :Protocol: TCP
32
+ :Algorithm: LEAST_CONN
33
+ :Port: '8080'
34
+ :HealthCheckPort: ''
35
+ :HealthCheck:
36
+ :Mode: TCP
37
+ :HealthThreshold: '2'
38
+ :UnhealthThreshold: '3'
39
+ :Interval: '5'
40
+ :Timeout: '15'
41
+ :Member:
42
+ - :IpAddress: 10.10.10.20
43
+ :Weight: '5'
44
+ :ServicePort:
45
+ - :Protocol: HTTP
46
+ :Port: ''
47
+ :HealthCheckPort: ''
48
+ - :Protocol: HTTPS
49
+ :Port: ''
50
+ :HealthCheckPort: ''
51
+ - :Protocol: TCP
52
+ :Port: ''
53
+ :HealthCheckPort: ''
54
+ - :IpAddress: 10.10.10.21
55
+ :Weight: '1'
56
+ :ServicePort:
57
+ - :Protocol: HTTP
58
+ :Port: ''
59
+ :HealthCheckPort: ''
60
+ - :Protocol: HTTPS
61
+ :Port: ''
62
+ :HealthCheckPort: ''
63
+ - :Protocol: TCP
64
+ :Port: ''
65
+ :HealthCheckPort: ''
66
+ :VirtualServer:
67
+ - :IsEnabled: 'true'
68
+ :Name: test-vs-1
69
+ :Description: Description of VirtualServer
70
+ :Interface:
71
+ :type: application/vnd.vmware.vcloud.orgVdcNetwork+xml
72
+ :name: 'ExternalNetwork'
73
+ :href: https://example.com/api/admin/network/12345678-1234-1234-1234-123456789012
74
+ :IpAddress: 192.2.0.88
75
+ :ServiceProfile:
76
+ - :IsEnabled: 'true'
77
+ :Protocol: HTTP
78
+ :Port: '8085'
79
+ :Persistence:
80
+ :Method: COOKIE
81
+ :CookieName: MY_SESSION_ID
82
+ :CookieMode: PREFIX
83
+ - :IsEnabled: 'true'
84
+ :Protocol: HTTPS
85
+ :Port: '443'
86
+ :Persistence:
87
+ :Method: SSL_SESSION_ID
88
+ - :IsEnabled: 'true'
89
+ :Protocol: TCP
90
+ :Port: '8082'
91
+ :Persistence:
92
+ :Method: ''
93
+ :Logging: 'false'
94
+ :Pool: test-pool-2