skytap-yf 0.2.3

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.
data/api_schema.yaml ADDED
@@ -0,0 +1,1016 @@
1
+ #TODO:NLA Resources to document:
2
+ #
3
+ # label
4
+ # schedule
5
+ # quota
6
+ # report
7
+ # account
8
+ # ip_range
9
+ # access_policy
10
+ # activation
11
+ # notification_rule
12
+ # user_notificiation_rule
13
+ # password_reset
14
+ # share
15
+ # sso_policy
16
+ # validation
17
+ # share
18
+ # project
19
+ # group
20
+
21
+ asset:
22
+ description: |
23
+ An asset is a file you upload to support your work in Skytap Cloud.
24
+
25
+ Assets may include nightly builds, ISOs, test data, training manuals or
26
+ any other files. Skytap Cloud also provides a set of public assets.
27
+ actions:
28
+ update:
29
+ id_required: true
30
+ params:
31
+ - name:
32
+ description: human-readable name for the asset
33
+ skip_actions:
34
+ - create
35
+
36
+ credential:
37
+ parent_resources:
38
+ - vm
39
+ description: |
40
+ A credential belongs to a VM and represents security credentials such as passwords.
41
+
42
+ Credentials can take any arbitrary text value. They are shown when using
43
+ SmartClient to view a VM.
44
+ actions:
45
+ create:
46
+ params:
47
+ - text:
48
+ description: username, password, or other contents of this credential
49
+ required: true
50
+ examples:
51
+ - "root/password123"
52
+ - "clever password"
53
+ skip_actions:
54
+ - show
55
+ - update
56
+
57
+ configuration:
58
+ description: |
59
+ A configuration is a virtual workspace that contains one or more virtual
60
+ machines (VM), one or more networks, and network connections.
61
+
62
+ A configuration also defines how VMs leverage the public internet and/or
63
+ secure access via VPN access to a corporate data center. A configuration
64
+ may be running, suspended, stopped or powered off. You may save the exact
65
+ state of a configuration as a template.
66
+ actions:
67
+ create:
68
+ description: |
69
+ Create a configuration based on the specified template.
70
+ params:
71
+ - template_id:
72
+ description: ID of the template to copy
73
+ required: true
74
+ - name:
75
+ description: human-readable name of the configuration; defaults to the name of the template specified
76
+ - vm_ids:
77
+ description: comma-separated sequence of the template VMs to include; must be flanked by square brackets and not include whitespace
78
+ examples:
79
+ - "[123,456,78]"
80
+ - "[36]"
81
+ update:
82
+ id_required: true
83
+ params:
84
+ - name:
85
+ description: human-readable name of the configuration
86
+ - runstate:
87
+ description: "the runtime state to bring the configuration to; one of the following: \"running\", \"suspended\", \"stopped\" (using shut down), \"halted\" (using power off)"
88
+ examples:
89
+ - "running"
90
+ - "suspended"
91
+ - template_id:
92
+ description: ID of the template to copy into the configuration
93
+ - vm_ids:
94
+ description: comma-separated sequence of VMs to include; must be flanked by square brackets and not contain whitespace; provide only with template_id
95
+ examples:
96
+ - "[123,456,78]"
97
+ - "[36]"
98
+ - suspend_on_idle:
99
+ description: number of seconds after the configuration was last viewed before it should be auto-suspended
100
+ - owner:
101
+ description: ID of the user to assign the configuration to
102
+ - routable:
103
+ description: whether to allow all traffic between networks in the configuration
104
+ - disable_internet:
105
+ description: whether to disable outbound Internet traffic for VMs in the configuration
106
+
107
+ export:
108
+ description: |
109
+ An export job represents the process of preparing a Skytap template VM to
110
+ be downloaded to the local filesystem
111
+ actions:
112
+ create:
113
+ description: |
114
+ Create an export job, allowing Skytap VMs to be downloaded locally.
115
+
116
+ The VM must be part of a template and must be powered off.
117
+
118
+ Once Skytap has finished processing the VM, the export job's status
119
+ will be "complete." You may then download the VM file using FTP.
120
+
121
+ The name of the downloadable file is "vm.7z," a compressed file in
122
+ 7-Zip format. Once extracted, your VM disk will be present as
123
+ "session.vmdk" and your VM configuration file will be present as
124
+ "session.vmx." Depending on the configuration of your VM, there may be
125
+ other file types.
126
+
127
+ See the following page for more information:
128
+ https://cloud.skytap.com/docs/index.php/Importing_and_Exporting_Virtual_Machines#How_to_Export_VMs_Out_of_Skytap
129
+ params:
130
+ - vm_id:
131
+ description: ID of the template VM to export
132
+ required: true
133
+
134
+ import:
135
+ description: |
136
+ An import job represents the process of creating a Skytap template from a
137
+ local VM file.
138
+ actions:
139
+ create:
140
+ params:
141
+ - template_name:
142
+ description: human-readable name of the template to create
143
+ required: true
144
+ - template_description:
145
+ description: human-readable description of the template to create
146
+ required: true
147
+ - network_domain:
148
+ description: domain name of the new template's network
149
+ required: true
150
+ examples:
151
+ - "test.net"
152
+ - network_subnet:
153
+ description: subnet of the new template's network
154
+ required: true
155
+ examples:
156
+ - "10.0.0.0/24"
157
+ - "192.168.0.0/16"
158
+ - interface_ip:
159
+ description: IP address of the new VM
160
+ required: true
161
+ examples:
162
+ - "10.0.0.1"
163
+ - "192.168.0.1"
164
+ - interface_hostname:
165
+ description: hostname of the new VM
166
+ required: true
167
+ examples:
168
+ - "host"
169
+ - "db-node"
170
+ - credentials:
171
+ description: login credentials for the new VM
172
+ examples:
173
+ - "root/password123"
174
+ - "clever password"
175
+ - region:
176
+ description: region into which to import the VM; defaults to US-West
177
+ examples:
178
+ - "US-West"
179
+ - "US-East"
180
+ update:
181
+ description: |
182
+ Update attributes of the specified import.
183
+ id_required: true
184
+ params:
185
+ - status:
186
+ description: set to "processing" to start the import process
187
+ examples:
188
+ - "processing"
189
+ - template_name:
190
+ description: human-readable name of the template to create
191
+ - template_description:
192
+ description: human-readable description of the template to create
193
+ - network_domain:
194
+ description: domain name of the new template's network
195
+ examples:
196
+ - "test.net"
197
+ - network_subnet:
198
+ description: subnet of the new template's network
199
+ examples:
200
+ - "10.0.0.0/24"
201
+ - "192.168.0.0/16"
202
+ - interface_ip:
203
+ description: IP address of the new VM
204
+ examples:
205
+ - "10.0.0.1"
206
+ - "192.168.0.1"
207
+ - interface_hostname:
208
+ description: hostname of the new VM
209
+ examples:
210
+ - "host"
211
+ - "db-node"
212
+ - credentials:
213
+ description: login credentials for the new VM
214
+ examples:
215
+ - "root/password123"
216
+ - "clever password"
217
+
218
+ ip:
219
+ description: |
220
+ A public IP is a publicly-accessible IP address that can be attached to a VM or VPN.
221
+
222
+ Unlike a published service, a public IP address exposes all of the VM's
223
+ ports to the public Internet, and does so without remapping them.
224
+ actions:
225
+ create:
226
+ description: |
227
+ Attaches a public IP to the specified VM interface
228
+
229
+ The IP address must be in your company's public IP pool. Use the
230
+ "acquire" command to aquire one.
231
+ params:
232
+ - vm_id:
233
+ description: ID of the VM to which this public IP should be attached
234
+ required: true
235
+ - ip:
236
+ description: public IP address to attach
237
+ required: true
238
+ - interface_id:
239
+ description: ID of the VM interface to which to attach the public IP
240
+ required: true
241
+ skip_actions:
242
+ - show
243
+ - update
244
+ - destroy
245
+
246
+ #TODO:NLA Uncomment after parent resources can be specified.
247
+ interface:
248
+ parent_resources:
249
+ - configuration
250
+ - vm
251
+ description: |
252
+ An interface consists of a virtualized network adapter in a VM.
253
+
254
+ It is a component of a virtual machine, so operations on network
255
+ interfaces are implicitly operations on the containing configuration. At
256
+ the same time, the interface is attached to a virtual network.
257
+ actions:
258
+ create:
259
+ params:
260
+ - vm_id:
261
+ description: ID of the VM to which this interface should belong
262
+ required: true
263
+ - nic_type:
264
+ description: |
265
+ the NIC type of the interface; must be one of the following:
266
+ pcnet32, vmxnet, vmxnet3, e1000, e1000e; note that not all
267
+ operating systems support all NIC types; for more details see
268
+ https://cloud.skytap.com/docs/index.php/Can_I_attach_more_than_one_Network_Adapter_(NIC)_to_my_VM%3F_What_different_types_of_NICs_does_Skytap_support%3F
269
+ update:
270
+ description: |
271
+ Connects the interface to a network, or disconnects from a network
272
+ id_required: true
273
+ params:
274
+ - vm_id:
275
+ description: ID of the interface's VM
276
+ required: true
277
+ - network_id:
278
+ description: |
279
+ ID of the network to connect the interface to; if the value
280
+ is null, then the interface will be disconnected from the current
281
+ network
282
+
283
+ #TODO:NLA Uncomment after parent resources can be specified.
284
+ #
285
+ # network:
286
+ # description: |
287
+ # A network is a virtual subnet that connects some or all VMs in a configuration.
288
+
289
+ # Skytap Cloud allows you to create two types of networks for your
290
+ # configurations: automatic and manual. Automatic networks are configured
291
+ # by Skytap Cloud to give you full networking functionality, including
292
+ # DHCP, DNS, and access to the public Internet from any VM in the
293
+ # configuration. Manual networks are not configured by Skytap Cloud, and
294
+ # require the user to specify the network's parameters. As such, manual
295
+ # networks should be reserved for advanced use cases.
296
+
297
+ # For more information, see https://cloud.skytap.com/docs/index.php/Networking
298
+ # actions:
299
+ # create:
300
+ # params:
301
+ # - configuration_id:
302
+ # description: ID of the configuration to which the new network will belong
303
+ # required: true
304
+ # - name:
305
+ # description: human-readable name of the network
306
+ # required: true
307
+ # - network_type:
308
+ # description: |
309
+ # type of network, either "automatic" or "manual"; if not
310
+ # provided, will be automatic; automatic networks include DHCP,
311
+ # DNS, and access to the public Internet; manual networks are not
312
+ # configured by Skytap Cloud
313
+ # - subnet_addr:
314
+ # description: address of the subnet, in IPv4 form (X.X.X.X)
315
+ # required: true
316
+ # examples:
317
+ # - "10.0.0.0"
318
+ # - "192.168.0.0"
319
+ # - subnet_size:
320
+ # description: size of the subnet mask as an integer between 16 and 29, inclusive
321
+ # required: true
322
+ # - gateway:
323
+ # description: |
324
+ # the IP address of the gateway, in IPv4 form (X.X.X.X); required
325
+ # for manual networks; not allowed for automatic networks; if
326
+ # provided, must be included in the subnet; if not provided, the
327
+ # gateway will be the penultimate address of the subnet
328
+ # required: true
329
+ # examples:
330
+ # - "10.2.3.254"
331
+ # - domain_name:
332
+ # description: domain name of the network; required for automatic networks; not allowed for manual networks
333
+ # required: true
334
+ # examples:
335
+ # - "test.net"
336
+ # - tunnelable:
337
+ # description: whether other networks can create ICNR tunnels to this network
338
+ # - primary_nameserver:
339
+ # description: primary IP address of a custom DNS server for this network; not allowed for manual networks
340
+ # examples:
341
+ # - "12.34.56.78"
342
+ # - secondary_nameserver:
343
+ # description: secondary IP address of a custom DNS server for this network, for redundancy; must also provide primary_nameserver
344
+ # examples:
345
+ # - "12.34.60.80"
346
+ # update:
347
+ # id_required: true
348
+ # params:
349
+ # - configuration_id:
350
+ # description: ID of this network's configuration or template
351
+ # required: true
352
+ # - name:
353
+ # description: human-readable name of the network
354
+ # - subnet_addr:
355
+ # description: address of the subnet, in IPv4 form (X.X.X.X)
356
+ # examples:
357
+ # - "10.0.0.0"
358
+ # - "192.168.0.0"
359
+ # - subnet_size:
360
+ # description: size of the subnet mask as an integer between 16 and 29, inclusive
361
+ # - gateway:
362
+ # description: |
363
+ # the IP address of the gateway, in IPv4 form (X.X.X.X); required
364
+ # for manual networks; not allowed for automatic networks; if
365
+ # provided, must be included in the subnet; if not provided, the
366
+ # gateway will be the penultimate address of the subnet
367
+ # examples:
368
+ # - "10.2.3.254"
369
+ # - domain_name:
370
+ # description: domain name of the network; required for automatic networks; not allowed for manual networks
371
+ # examples:
372
+ # - "test.net"
373
+ # - tunnelable:
374
+ # description: whether other networks can create ICNR tunnels to this network
375
+ # - primary_nameserver:
376
+ # description: primary IP address of a custom DNS server for this network; not allowed for manual networks
377
+ # examples:
378
+ # - "12.34.56.78"
379
+ # - secondary_nameserver:
380
+ # description: secondary IP address of a custom DNS server for this network, for redundancy; must also provide primary_nameserver
381
+ # examples:
382
+ # - "12.34.60.80"
383
+ # skip_actions:
384
+ # - create
385
+
386
+ # network_vpn:
387
+ # description: |
388
+ # A network-VPN attachment represents the state of a configuration network
389
+ # being attached and possibly connected to a VPN.
390
+
391
+ # Editing or creating attached networks allows you to manage the network
392
+ # connections of a VPN. An attached network resource will be contained in
393
+ # the representation of a VPN resource under a field named
394
+ # "attached_networks."
395
+ # actions:
396
+ # create:
397
+ # description: Attach a network to a VPN
398
+ # params:
399
+ # - vpn_id:
400
+ # description: ID of the VPN to which the network will be attached
401
+ # required: true
402
+ # - network_id:
403
+ # description: ID of the network to be attached to the VPN
404
+ # required: true
405
+ # update:
406
+ # description: Connect the attached network to the VPN so that traffic will flow over the VPN tunnel, or disconnect.
407
+ # id_required: true
408
+ # params:
409
+ # - vpn_id:
410
+ # description: ID of the VPN to which the network is attached
411
+ # required: true
412
+ # - network_id:
413
+ # description: ID of the attached network
414
+ # required: true
415
+ # - connected:
416
+ # description: whether the network-VPN attachment should be connected; if false, then it will be disconnected
417
+ # required: true
418
+ # show:
419
+ # id_required: false
420
+ # params:
421
+ # - vpn_id:
422
+ # description: ID of the VPN to which the network is attached
423
+ # required: true
424
+ # - network_id:
425
+ # description: ID of the attached network
426
+ # required: true
427
+ # destroy:
428
+ # id_required: false
429
+ # description: Detach the network from the VPN
430
+ # params:
431
+ # - vpn_id:
432
+ # description: ID of the VPN to which the network is attached
433
+ # required: true
434
+ # - network_id:
435
+ # description: ID of the attached network
436
+ # required: true
437
+
438
+ # note:
439
+ # description: |
440
+ # A note is a chunk of human-readable text associated with a configuration.
441
+ # actions:
442
+ # index:
443
+ # params:
444
+ # #TODO:NLA Need a better way to express that one resource is nested inside another.
445
+ # - configuration_id:
446
+ # description: ID of the configuration
447
+ # required: true
448
+ # create:
449
+ # params:
450
+ # - configuration_id:
451
+ # description: ID of the configuration to which to attach the note
452
+ # required: true
453
+ # - text:
454
+ # description: human-readable text
455
+ # required: true
456
+ # skip_actions:
457
+ # - update
458
+ # - index
459
+
460
+
461
+ #TODO:NLA Uncomment after parent resources can be specified.
462
+
463
+ publish_set:
464
+ parent_resources:
465
+ - configuration
466
+ description: |
467
+ A published set (also called a published URL) is used to share access to
468
+ one or more VMs in a configuration with people who may not have Skytap
469
+ accounts.
470
+
471
+ Published sets come in "single-URL" or "multiple-URL" varieties. A
472
+ single-URL published set contains a single URL mapped to a set of VMs,
473
+ whereas a multiple-URL published set generates a unique URL for each VM
474
+ in the set.
475
+
476
+ For each VM belonging to a published set, you can determine whether a
477
+ user can view, run, or run and suspend it.
478
+ actions:
479
+ create:
480
+ description: Create a published set for the specified configuration.
481
+ params:
482
+ - configuration_id:
483
+ description: ID of this published set's configuration
484
+ required: true
485
+ - name:
486
+ description: human-readable name of the published set
487
+ required: true
488
+ - publish_set_type:
489
+ description: |
490
+ type of the published set; specify "single_url" if you want
491
+ only one URL mapped to the set of VMs, or else "multiple_url" if
492
+ there should be a unique URL for each VM in the set
493
+ required: true
494
+ - vms:
495
+ description: |
496
+ array of VM descriptors, each containing the following fields:
497
+ "vm_ref" - the ID or URL of the VM to include in the set
498
+ "access" - specifies how the VM may be accessed, either "view_only", "use", or "run_and_use"
499
+ examples:
500
+ - "[{\"vm_ref\": 123, \"access\": \"use\"}] (in JSON)"
501
+ - "<vms><vm><vm-ref>123</vm-ref><access>use</access></vm></vms> (in XML)"
502
+ - password:
503
+ description: |
504
+ access password for the new published set; if provided, then
505
+ this password must be supplied by the user upon accessing the URL
506
+ - start_time:
507
+ description: |
508
+ start of the allowed daily access window for the published
509
+ set, expressed in HH:MM format, for hours 0:23 and minutes 0:59;
510
+ if provided, you must also provide end_time; to delete an access
511
+ window, specify empty strings for the start_time and end_time
512
+ examples:
513
+ - "09:00"
514
+ - "17:30"
515
+ - end_time:
516
+ description: |
517
+ end of the allowed daily access window for the published set,
518
+ expressed in HH:MM format, for hours 0:23 and minutes 0:59; if
519
+ provided, you must also provide start_time; to delete an access
520
+ window, specify empty strings for the start_time and end_time
521
+ examples:
522
+ - "09:00"
523
+ - "17:30"
524
+ - time_zone:
525
+ description: |
526
+ time zone specified to quality the allowed daily access window;
527
+ if provided, you must also specify start_time and end_time; if
528
+ this is not provided, the API caller’s default time zone is used
529
+ examples:
530
+ - "Pacific Time (US & Canada)"
531
+ - "Eastern Time (US & Canada)"
532
+ - "UTC"
533
+ - "New Delhi"
534
+ update:
535
+ id_required: true
536
+ params:
537
+ - name:
538
+ description: human-readable name of the published set
539
+ required: true
540
+ - publish_set_type:
541
+ description: |
542
+ type of the published set; specify "single_url" if you want
543
+ only one URL mapped to the set of VMs, or else "multiple_url" if
544
+ there should be a unique URL for each VM in the set
545
+ required: true
546
+ - vms:
547
+ description: |
548
+ array of VM descriptors, each containing the following fields:
549
+ "vm_ref" - the ID or URL of the VM to include in the set
550
+ "access" - specifies how the VM may be accessed, either "view_only", "use", or "run_and_use"
551
+ examples:
552
+ - "[{\"vm_ref\": 123, \"access\": \"use\"}] (in JSON)"
553
+ - "<vms><vm><vm-ref>123</vm-ref><access>use</access></vm></vms> (in XML)"
554
+ - password:
555
+ description: |
556
+ access password for the published set; if provided, then this
557
+ password must be supplied by the user upon accessing the URL
558
+ - start_time:
559
+ description: |
560
+ start of the allowed daily access window for the published
561
+ set, expressed in HH:MM format, for hours 0:23 and minutes 0:59;
562
+ if provided, you must also provide end_time; to delete an access
563
+ window, specify empty strings for the start_time and end_time
564
+ examples:
565
+ - "09:00"
566
+ - "17:30"
567
+ - end_time:
568
+ description: |
569
+ end of the allowed daily access window for the published set,
570
+ expressed in HH:MM format, for hours 0:23 and minutes 0:59; if
571
+ provided, you must also provide start_time; to delete an access
572
+ window, specify empty strings for the start_time and end_time
573
+ examples:
574
+ - "09:00"
575
+ - "17:30"
576
+ - time_zone:
577
+ description: |
578
+ time zone specified to quality the allowed daily access window;
579
+ if provided, you must also specify start_time and end_time; if
580
+ this is not provided, the API caller’s default time zone is used
581
+ examples:
582
+ - "Pacific Time (US & Canada)"
583
+ - "Eastern Time (US & Canada)"
584
+ - "UTC"
585
+ - "New Delhi"
586
+
587
+ schedule:
588
+ description: The schedule resource represents a set of one or more automated actions applied to a configuration or template.
589
+ actions:
590
+ create:
591
+ params:
592
+ - title:
593
+ description: name of the schedule
594
+ required: true
595
+ - configuration_id:
596
+ description: configuration ID
597
+ - template_id:
598
+ description: template ID
599
+ - start_at:
600
+ description: |
601
+ A string specifying when the schedule will execute. 
602
+ The format for the time is YYYY/MM/DD hh:mm, where YYYY is a four-­‐digit year, 
603
+ MM is a two-­‐digit month, DD is a two-­‐digit day, hh is a two-­‐digit hour 
604
+ and mm is a two-­‐digit minute.
605
+ required: true
606
+ examples:
607
+ - 2012/07/28 11:09
608
+ - end_at:
609
+ description: A string specifying the end_date of a schedule, only relevant if the schedule is set to recur.
610
+ - delete_at_end:
611
+ description: if end_at is set, this boolean determines whether the schedule's configuration will be deleted when the time specified at end_at is reached.
612
+ - notify_user:
613
+ description: This boolean determines whether the schedules owner recieves an email after the completion of a successful action.
614
+ - executions:
615
+ description: An array of objects that collectively represent an action performed when a schedule is run.
616
+ - actions:
617
+ description: scheduled actions
618
+ - recurring_days:
619
+ description: an array of days on which the schedule wil occur.
620
+ - time_zone:
621
+ description: |
622
+ A string specifying the time zone in which the scheduled action will run.
623
+ These are entered as English strings.
624
+ examples:
625
+ - Pacific Time (US & Canada)
626
+ required: true
627
+
628
+ - user:
629
+ description: A list of key-value pairs representing the owner of the schedule, with the following fields
630
+ examples:
631
+ - id
632
+ - url
633
+ - login_name
634
+ - first_name
635
+ - last_name
636
+ - email
637
+
638
+ project:
639
+ description: |
640
+ Projects are an access permissions model used to share configurations, templates, and assets among different
641
+ users. The project resource is a top-level element in the API data model.
642
+ actions:
643
+ create:
644
+ params:
645
+ - name:
646
+ description: human friendly name
647
+ - summary:
648
+ description: user-defined description of project
649
+ - show_project_members:
650
+ description: Determines if projects members can view list of other project members
651
+ - auto_add_role_name:
652
+ description: Defines "automatic role" for project
653
+ update:
654
+ id_required: true
655
+ params:
656
+ - name:
657
+ description: human friendly name
658
+ required: true
659
+ - summary:
660
+ description: user-defined description of project
661
+ - show_project_members:
662
+ description: Determines if projects members can view list of other project members
663
+ - auto_add_role_name:
664
+ description: Defines "automatic role" for project
665
+
666
+
667
+
668
+ service:
669
+ parent_resources:
670
+ - configuration
671
+ - vm
672
+ - interface
673
+ description: |
674
+ A published service represents a binding of a port on a VM's virtual network interface to an IP and port that is routable and accessible from the public Internet.
675
+
676
+ This mechanism is used to selectively expose ports on the VM to the public Internet.
677
+ actions:
678
+ create:
679
+ params:
680
+ - vm_id:
681
+ description: ID of the VM that owns the network interface
682
+ required: true
683
+ - interface_id:
684
+ description: ID of the interface to which the published service should be bound
685
+ required: true
686
+ - internal_port:
687
+ description: |
688
+ port on the VM to expose to the Internet; for instance, port 22
689
+ for a standard SSH server or port 80 for a standard web server
690
+ required: true
691
+ skip_actions:
692
+ - update
693
+
694
+ #TODO:NLA Uncomment after parent resources can be specified.
695
+ # subnet:
696
+ # description: |
697
+ # A subnet resource represents a remote subnet associated with a VPN.
698
+
699
+ # These will take the form of "included" subnets (subnet ranges to which
700
+ # traffic from Skytap Cloud will be routed) and "excluded" subnets (subnets
701
+ # expressly prevented from connecting to Skytap Cloud).
702
+ # actions:
703
+ # create:
704
+ # params:
705
+ # - vpn_id:
706
+ # description: ID of the VPN with which to associate this subnet
707
+ # required: true
708
+ # - cidr_block:
709
+ # description: IP range of the subnet, in CIDR block notation
710
+ # required: true
711
+ # examples:
712
+ # - "10.0.0.0/24"
713
+ # - "77.77.0.0/16"
714
+ # - excluded:
715
+ # description: whether the subnet is excluded, that is, expressly prevented from connecting to Skytap Cloud; defaults to false
716
+ # skip_actions:
717
+ # - update
718
+
719
+ template:
720
+ description: |
721
+ A template is a read-only definition of a complete virtual data center.
722
+
723
+ Templates may be simple, containing only a single VM or quite complex
724
+ containing hundreds of VMs spanning multiple networks. Configurations are
725
+ created from templates. Skytap provides public templates which you can
726
+ use to get started. You can also create your own templates by importing
727
+ existing virtual machines.
728
+ actions:
729
+ create:
730
+ description: |
731
+ Create a template based on the specified configuration.
732
+ params:
733
+ - configuration_id:
734
+ description: ID of the configuration to copy
735
+ required: true
736
+ - name:
737
+ description: human-readable name of the template; defaults to the name of the source configuration
738
+ - description:
739
+ description: human-readable description of the template
740
+ - vm_instance_multiselect:
741
+ description: comma-separated sequence of the configuration VMs to include; must be flanked by square brackets and not include whitespace
742
+ examples:
743
+ - "[123,456,78]"
744
+ - "[36]"
745
+ - network_multiselect:
746
+ description: comma-separated sequence of the configuration networks to include; must be flanked by square brackets and not include whitespace
747
+ examples:
748
+ - "[123,456,78]"
749
+ - "[36]"
750
+ - publish_sets:
751
+ description: whether published sets in the source configuration should be copied to the template; defaults to true
752
+ update:
753
+ id_required: true
754
+ params:
755
+ - name:
756
+ description: human-readable name of the template
757
+ - description:
758
+ description: human-readable description of the template
759
+ - owner:
760
+ description: ID of the user to which this template should be reassigned; requires admin privileges
761
+ - reassign_context:
762
+ description: ID of the project to add this template to when reassigning; must provide "owner" param
763
+ - tags:
764
+ description: comma-separated sequence of tags to assign to the template, replacing all existing tags
765
+ examples:
766
+ - "one, two, three"
767
+
768
+ #TODO:NLA Uncomment after parent resources can be specified.
769
+ # tunnel:
770
+ # description: |
771
+ # A tunnel represents a route between two networks in different configurations (ICNR).
772
+ # actions:
773
+ # create:
774
+ # description: Create a tunnel between two networks so traffic may be routed between them.
775
+ # params:
776
+ # - source_network_id:
777
+ # description: ID of the source network
778
+ # required: true
779
+ # - target_network_id:
780
+ # description: ID of the target network; this network must have a true value for the "tunnelable" attribute
781
+ # required: true
782
+ # skip_actions:
783
+ # - update
784
+
785
+ user:
786
+ description: |
787
+ A user is an account created for an individual who uses Skytap.
788
+
789
+ Apart from user information and login data, the user account is assigned
790
+ a user role, which defines the access permissions of the account. Users
791
+ have access to resources they own (e.g. templates, configurations, and
792
+ assets) or to resources that are part of a project they belong to.
793
+ actions:
794
+ create:
795
+ params:
796
+ - login_name:
797
+ description: user's login name
798
+ required: true
799
+ - email:
800
+ description: user's email address
801
+ required: true
802
+ - first_name:
803
+ description: user's first name
804
+ required: true
805
+ - last_name:
806
+ description: user's last name
807
+ required: true
808
+ - title:
809
+ description: user's job title
810
+ - login_password:
811
+ description: user's password; if omitted, the user will be asked to enter a password during activation
812
+ - verify_password:
813
+ description: confirmation of the login password; must be provided if login_password is present
814
+ - time_zone:
815
+ description: user's time zone; defaults to "Pacific Time (US & Canada)"
816
+ examples:
817
+ - "Pacific Time (US & Canada)"
818
+ - "Eastern Time (US & Canada)"
819
+ - "UTC"
820
+ - "New Delhi"
821
+ - wants_email:
822
+ description: whether the user can be notified by Skytap of product marketing updates and feedback requests
823
+ - has_public_library:
824
+ description: whether the user is able to access Skytap public templates and public assets
825
+ - can_import:
826
+ description: whether the user can import VMs into Skytap
827
+ - can_export:
828
+ description: whether the user can export VMs from Skytap
829
+ - account_role:
830
+ description: "user's role; one of the following: \"admin\", \"user_manager\", \"standard_user\" (default), \"restricted_user\""
831
+ destroy:
832
+ id_required: true
833
+ params:
834
+ - transfer_user_id:
835
+ description: When deleting a user, a transfer_user_id must be specified
836
+ update:
837
+ id_required: true
838
+ params:
839
+ - first_name:
840
+ description: user's first name
841
+ - last_name:
842
+ description: user's last name
843
+ - title:
844
+ description: user's job title
845
+ - login_name:
846
+ description: user's login name
847
+ - email:
848
+ description: user's email address
849
+ - login_password:
850
+ description: user's new password (if using JSON); must also provide verify_password
851
+ - verify_password:
852
+ description: user's new password (if using JSON); only provide if setting verify_password
853
+ - password:
854
+ description: user's new password (if using XML)
855
+ - time_zone:
856
+ description: user's time zone
857
+ examples:
858
+ - "Pacific Time (US & Canada)"
859
+ - "Eastern Time (US & Canada)"
860
+ - "UTC"
861
+ - "New Delhi"
862
+ - wants_email:
863
+ description: whether the user can be notified by Skytap of product marketing updates and feedback requests
864
+ - has_public_library:
865
+ description: whether the user is able to access Skytap public templates and public assets
866
+ - can_import:
867
+ description: whether the user can import VMs into Skytap
868
+ - can_export:
869
+ description: whether the user can export VMs from Skytap
870
+ - account_role:
871
+ description: "user's role; one of the following: \"admin\", \"user_manager\", \"standard_user\" (default), \"restricted_user\""
872
+
873
+ vm:
874
+ description: |
875
+ A VM (virtual machine) is a full computer, which runs an operating
876
+ system and applications.
877
+
878
+ VMs have their own virtual resources including CPU, RAM, file system
879
+ storage, CD/DVD drive, and network interfaces. These resources are all
880
+ configurable allowing you to create VMs that mirror your production
881
+ machines easily. The "power" of a VM is measured as Skytap Virtual
882
+ Machine (SVM) units.
883
+ actions:
884
+ update:
885
+ id_required: true
886
+ params:
887
+ - name:
888
+ description: human-readable name of the VM
889
+ - runstate:
890
+ description: |
891
+ Perform an operation on the VM to bring its state to the
892
+ specified value. Must be one of: "running"; "suspended";
893
+ "stopped" (perform a graceful shutdown of the VM, notifying the
894
+ OS); "halted" (power off the VM without notifying the OS)
895
+ - asset_id:
896
+ description: the ID of the asset to insert into the VM as a CD (ISO)
897
+ #TODO:NLA Implement this.
898
+ # - hardware:
899
+ # description:
900
+ skip_actions:
901
+ - create
902
+ #TODO:NLA Remove this once parent resource paths are implemented.
903
+ - index
904
+
905
+ vpn:
906
+ description: |
907
+ A VPN (virtual private network) refers to an IPsec network tunnel
908
+ connecting a Skytap configuration to an outside server (such as a
909
+ corporate intranet).
910
+
911
+ A VPN resource connects to one logical external endpoint. There may be
912
+ many Skytap configurations connected simultaneously to one VPN, as long
913
+ as the network subnets of any two running configurations do not overlap.
914
+ Additionally, you may create multiple VPN resources if you want to
915
+ connect your configurations to more than one external endpoint.
916
+
917
+ For more details see
918
+ https://cloud.skytap.com/docs/index.php/Connecting_Your_Corporate_Network_to_Skytap_Cloud
919
+ actions:
920
+ create:
921
+ params:
922
+ - name:
923
+ description: human-readable name of the VPN
924
+ required: true
925
+ - remote_peer_ip:
926
+ description: public IP associated with external endpoint
927
+ required: true
928
+ - local_peer_ip:
929
+ description: |
930
+ public IP associated with Skytap Cloud endpoint; the IP address
931
+ must be in your company's public IP pool; use the "acquire"
932
+ command to aquire one
933
+ required: true
934
+ - local_subnet:
935
+ description: range of Skytap configuration IP addresses routed through VPN to external endpoint
936
+ required: true
937
+ - phase_1_encryption_algorithm:
938
+ description: name of phase 1 encryption algorithm; must be one of "3des", "aes", "aes 256"
939
+ required: true
940
+ - phase_1_hash_algorithm:
941
+ description: name of phase 1 hash algorithm; must be one of "md5", "sha1"
942
+ required: true
943
+ - phase_1_pre_shared_key:
944
+ description: phase 1 pre-shared key; must be a string whose length is between 1 and 128, inclusive
945
+ required: true
946
+ - phase_1_sa_lifetime:
947
+ description: value of phase 1 SA lifetime, in seconds, between 1 and 2^31-1, inclusive
948
+ required: true
949
+ - phase_1_dh_group:
950
+ description: name of phase 1 Diffie-Hellman group; must be one of "modp768", "modp1024", "modp1536"
951
+ required: true
952
+ - phase_2_encryption_algorithm:
953
+ description: name of phase 2 encryption algorithm; must be one of "3des", "aes", "aes 256"
954
+ required: true
955
+ - phase_2_authentication_algorithm:
956
+ description: name of phase 2 authentication algorithm; must be one of "hmac_md5", "hmac_sha1"
957
+ required: true
958
+ - phase_2_perfect_forward_secrecy:
959
+ description: whether perfect forward secrecy (PFS) should be used
960
+ required: true
961
+ - phase_2_pfs_group:
962
+ description: name of PFS group; must be provided if and only if phase_2_perfect_forward_secrecy is provided, and one of "modp768" (group 1), "modp1024" (group 2), "modp1536" (group 5)
963
+ required: true
964
+ - phase_2_sa_lifetime:
965
+ description: value of phase 2 SA lifetime, in seconds, between 1 and 2^31-1, inclusive
966
+ required: true
967
+ - sa_policy_level:
968
+ description: name of security policy level; must be one of "use", "require", "unique"
969
+ required: true
970
+ - dpd_enabled:
971
+ description: whether dead peer detection is enabled
972
+ required: true
973
+ - maximum_segment_size:
974
+ description: maximum segment size (MSS); if provided, must be between 536 and 1460, inclusive
975
+ update:
976
+ id_required: true
977
+ params:
978
+ - enabled:
979
+ description: whether the VPN is enabled; if the VPN is not enabled, then even if Skytap configurations are connected to it, traffic will not flow over the VPN tunnel to the external endpoint
980
+ - name:
981
+ description: human-readable name of the VPN
982
+ - remote_peer_ip:
983
+ description: public IP associated with external endpoint
984
+ - local_peer_ip:
985
+ description: |
986
+ public IP associated with Skytap Cloud endpoint; the IP address
987
+ must be in your company's public IP pool; use the "acquire"
988
+ command to aquire one
989
+ - local_subnet:
990
+ description: range of Skytap configuration IP addresses routed through VPN to external endpoint
991
+ - phase_1_encryption_algorithm:
992
+ description: name of phase 1 encryption algorithm; must be one of "3des", "aes", "aes 256"
993
+ - phase_1_hash_algorithm:
994
+ description: name of phase 1 hash algorithm; must be one of "md5", "sha1"
995
+ - phase_1_pre_shared_key:
996
+ description: phase 1 pre-shared key; must be a string whose length is between 1 and 128, inclusive
997
+ - phase_1_sa_lifetime:
998
+ description: value of phase 1 SA lifetime, in seconds, between 1 and 2^31-1, inclusive
999
+ - phase_1_dh_group:
1000
+ description: name of phase 1 Diffie-Hellman group; must be one of "modp768", "modp1024", "modp1536"
1001
+ - phase_2_encryption_algorithm:
1002
+ description: name of phase 2 encryption algorithm; must be one of "3des", "aes", "aes 256"
1003
+ - phase_2_authentication_algorithm:
1004
+ description: name of phase 2 authentication algorithm; must be one of "hmac_md5", "hmac_sha1"
1005
+ - phase_2_perfect_forward_secrecy:
1006
+ description: whether perfect forward secrecy (PFS) should be used
1007
+ - phase_2_pfs_group:
1008
+ description: name of PFS group; must be provided if and only if phase_2_perfect_forward_secrecy is provided, and one of "modp768" (group 1), "modp1024" (group 2), "modp1536" (group 5)
1009
+ - phase_2_sa_lifetime:
1010
+ description: value of phase 2 SA lifetime, in seconds, between 1 and 2^31-1, inclusive
1011
+ - sa_policy_level:
1012
+ description: name of security policy level; must be one of "use", "require", "unique"
1013
+ - dpd_enabled:
1014
+ description: whether dead peer detection is enabled
1015
+ - maximum_segment_size:
1016
+ description: maximum segment size (MSS); if provided, must be between 536 and 1460, inclusive