1
0
Fork 0
mirror of https://github.com/fog/fog.git synced 2022-11-09 13:51:43 -05:00
fog--fog/tests/vcloud_director/requests/compute/schema_helper.rb

663 lines
21 KiB
Ruby

class VcloudDirector
module Compute
module Schema
# Mapping of a content media type to a xsd complex type.
MEDIA_TYPE_MAPPING_TYPE = {
:MediaType => String,
:ComplexTypeName => String,
:SchemaLocation => String
}
# Information for one version of the API.
VERSION_INFO_TYPE = {
:Version => String,
:LoginUrl => String,
:MediaTypeMapping => [MEDIA_TYPE_MAPPING_TYPE]
}
# List all supported versions.
SUPPORTED_VERSIONS_TYPE = {
:VersionInfo => [VERSION_INFO_TYPE]
}
# The standard error message type used in the vCloud REST API.
ERROR_TYPE = {
:majorErrorCode => String,
:message => String,
:minorErrorCode => String,
:stackTrace => Fog::Nullable::String,
:vendorSpecificErrorCode => Fog::Nullable::String
}
# The base type for all objects in the vCloud model. Has an optional list
# of links and href and type attributes.
REFERENCE_TYPE = {
:href => String,
:id => Fog::Nullable::String,
:name => Fog::Nullable::String,
:type => Fog::Nullable::String
}
# Extends reference type by adding relation attribute. Defines a
# hyper-link with a relationship, hyper-link reference, and an optional
# MIME type.
LINK_TYPE = REFERENCE_TYPE.merge({
:rel => String
})
# Represents a reference to a resource. Contains an href attribute, a
# resource status attribute, and optional name and type attributes.
RESOURCE_REFERENCE_TYPE = REFERENCE_TYPE.merge({
:status => Fog::Nullable::String
})
# The base type for all objects in the vCloud model. Has an optional list
# of links and href and type attributes.
RESOURCE_TYPE = {
:href => Fog::Nullable::String,
:type => Fog::Nullable::String,
# :Link => [LINK_TYPE] -- FIXME: not required
}
# The base type for all resource types which contain an id attribute.
IDENTIFIABLE_RESOURCE_TYPE = RESOURCE_TYPE.merge({
:id => Fog::Nullable::String,
:operationKey => Fog::Nullable::String,
})
# Basic entity type in the vCloud object model. Includes a name, an
# optional description, and an optional list of links.
ENTITY_TYPE = IDENTIFIABLE_RESOURCE_TYPE.merge({
:name => String
})
# Represents a file to be transferred (uploaded or downloaded).
FILE_TYPE = ENTITY_TYPE.merge({
:bytesTransfered => Fog::Nullable::String,
:checksum => Fog::Nullable::String, # normalizedString
:size => Fog::Nullable::String
})
# Represents a list of files to be transferred (uploaded or downloaded).
FILES_LIST_TYPE = {
:File => [FILE_TYPE]
}
# Container for query result sets.
CONTAINER_TYPE = RESOURCE_TYPE.merge({
:name => String,
:page => String,
:pageSize => String,
:total => String
})
# Represents an asynchronous operation in vCloud Director.
TASK_TYPE = ENTITY_TYPE.merge({
:cancelRequested => Fog::Nullable::String,
:endTime => Fog::Nullable::String,
:expiryTime => String,
:operation => Fog::Nullable::String,
:operationName => Fog::Nullable::String,
:serviceNamespace => Fog::Nullable::String,
:startTime => Fog::Nullable::String,
:status => String,
# :Tasks => TASKS_IN_PROGRESS_TYPE, # not happening!
:Owner => REFERENCE_TYPE,
# :Error => ERROR_TYPE,
:User => REFERENCE_TYPE,
:Organization => REFERENCE_TYPE,
:Progress => Fog::Nullable::String,
# :Params => anyType,
:Details => Fog::Nullable::String
})
# A list of queued, running, or recently completed tasks.
TASKS_IN_PROGRESS_TYPE = {
:Task => [TASK_TYPE]
}
# Base type that represents a resource entity such as a vApp template or
# virtual media.
RESOURCE_ENTITY_TYPE = ENTITY_TYPE.merge({
:status => Fog::Nullable::String,
:Description => Fog::Nullable::String,
# :Tasks => TASKS_IN_PROGRESS_TYPE,
# :Files => FILES_LIST_TYPE
})
# Container for references to ResourceEntity objects in this vDC.
RESOURCE_ENTITIES_TYPE = {
:ResourceEntity => [RESOURCE_REFERENCE_TYPE]
}
# Represents a supported virtual hardware version.
SUPPORTED_HARDWARE_VERSION_TYPE = String
# Contains a list of VMware virtual hardware versions supported in this
# vDC.
SUPPORTED_HARDWARE_VERSIONS_TYPE = {
:SupportedHardwareVersion => SUPPORTED_HARDWARE_VERSION_TYPE
}
# Represents a base type for VAppType and VmType.
ABSTRACT_VAPP_TYPE = RESOURCE_ENTITY_TYPE.merge({
:deployed => String,
:DateCreated => String
})
VAPP_CHILDREN_TYPE = {
#:VApp => ABSTRACT_VAPP_TYPE,
:Vm => [ABSTRACT_VAPP_TYPE]
}
# Controls access to the resource.
ACCESS_SETTING_TYPE = {
:Subject => REFERENCE_TYPE,
:AccessLevel => String
}
# A list of access settings for a resource.
ACCESS_SETTINGS_TYPE = {
:AccessSettingType => [ACCESS_SETTING_TYPE]
}
# Container for references to available organization vDC networks.
AVAILABLE_NETWORKS_TYPE = {
:Network => [REFERENCE_TYPE]
}
# Collection of supported hardware capabilities.
CAPABILITIES_TYPE = {
:SupportedHardwareVersions => SUPPORTED_HARDWARE_VERSIONS_TYPE
}
# Represents the capacity of a given resource.
CAPACITY_TYPE = {
:Units => String,
:Allocated => Fog::Nullable::String,
:Limit => String
}
# Represents a capacity and usage of a given resource.
CAPACITY_WITH_USAGE_TYPE = CAPACITY_TYPE.merge({
:Reserved => String,
:Used => Fog::Nullable::String,
:Overhead => Fog::Nullable::String
})
# Represents vDC compute capacity.
COMPUTE_CAPACITY_TYPE = {
:Cpu => CAPACITY_WITH_USAGE_TYPE,
:Memory => CAPACITY_WITH_USAGE_TYPE
}
# Represents a guest customization settings.
GUEST_CUSTOMIZATION_SECTION_TYPE = { # TODO: extends Section_Type
:Enabled => Fog::Nullable::String,
:ChangeSid => Fog::Nullable::String,
:VirtualMachineId => Fog::Nullable::String,
:JoinDomainEnabled => Fog::Nullable::String,
:UseOrgSettings => Fog::Nullable::String,
:DomainName => Fog::Nullable::String,
:DomainUserName => Fog::Nullable::String,
:DomainUserPassword => Fog::Nullable::String,
:MachineObjectOU => Fog::Nullable::String,
:AdminPasswordEnabled => Fog::Nullable::String,
:AdminPasswordAuto => Fog::Nullable::String,
:AdminPassword => Fog::Nullable::String,
:ResetPasswordRequired => Fog::Nullable::String,
:CustomizationScript => Fog::Nullable::String,
:ComputerName => String,
:Link => LINK_TYPE
}
# Represents the owner of this entity.
OWNER_TYPE = RESOURCE_TYPE.merge({
:User => REFERENCE_TYPE
})
# VMware Tools and other runtime information for this virtual machine.
RUNTIME_INFO_SECTION_TYPE = { # TODO: extends Section_Type
:VMWareTools => {
:version => Fog::Nullable::String
}
}
# Container for references to storage profiles associated with a vDC.
VDC_STORAGE_PROFILES_TYPE = {
:VdcStorageProfile => [REFERENCE_TYPE]
}
# Allows you to specify certain capabilities of this virtual machine.
VM_CAPABILITIES_TYPE = RESOURCE_TYPE.merge({
:MemoryHotAddEnabled => String,
:CpuHotAddEnabled => String
})
# Represents the user view of a Catalog object.
CATALOG_TYPE = ENTITY_TYPE.merge({
#:Owner => OWNER_TYPE,
#:CatalogItems => CATALOG_ITEMS_TYPE,
:IsPublished => String,
:DateCreated => String
})
# Specifies access controls for a resource.
CONTROL_ACCESS_PARAMS_TYPE = {
:IsSharedToEveryone => String,
:EveryoneAccessLevel => Fog::Nullable::String,
# :AccessSettings => ACCESS_SETTINGS_TYPE
}
# Represents a Media object.
MEDIA_TYPE = RESOURCE_ENTITY_TYPE.merge({
:imageType => String,
:size => String,
:Owner => OWNER_TYPE,
:VdcStorageProfile => REFERENCE_TYPE
})
METADATA_TYPE = RESOURCE_TYPE.merge({
#:MetadataEntry => METADATA_ENTRY_TYPE
})
# Represents a list of organizations.
ORG_LIST_TYPE = RESOURCE_TYPE.merge({
:Org => [REFERENCE_TYPE]
})
# Represents the user view of a vCloud Director organization.
ORG_TYPE = ENTITY_TYPE.merge({
:Description => Fog::Nullable::String,
:Tasks => TASKS_IN_PROGRESS_TYPE,
:FullName => String,
:IsEnabled => Fog::Nullable::String
})
# Represents a vCloud Session.
SESSION_TYPE = RESOURCE_TYPE.merge({
:org => String,
:user => String,
:Link => [LINK_TYPE]
})
# A list of tasks.
TASKS_LIST_TYPE = ENTITY_TYPE.merge({
#:Task => TASK_TYPE
})
# Represents a vApp.
VAPP_TYPE = ABSTRACT_VAPP_TYPE.merge({
:ovfDescriptorUploaded => String,
:Owner => OWNER_TYPE,
:InMaintenanceMode => String,
:Children => VAPP_CHILDREN_TYPE
})
# Represents the user view of an organization vDC.
VDC_TYPE = ENTITY_TYPE.merge({
:status => Fog::Nullable::String,
:AllocationModel => String,
# :StorageCapacity => CAPACITY_WITH_USAGE_TYPE,
:ComputeCapacity => COMPUTE_CAPACITY_TYPE,
:ResourceEntities => RESOURCE_ENTITIES_TYPE,
:AvailableNetworks => AVAILABLE_NETWORKS_TYPE,
:Capabilities => CAPABILITIES_TYPE,
:NicQuota => String,
:NetworkQuota => String,
:UsedNetworkCount => String,
:VmQuota => Fog::Nullable::String,
:IsEnabled => Fog::Nullable::String,
:VdcStorageProfiles => VDC_STORAGE_PROFILES_TYPE # >= 5.1
})
# Represents a storage profile in an organization vDC.
VDC_STORAGE_PROFILE_TYPE = ENTITY_TYPE.merge({
:Enabled => Fog::Nullable::String,
:Units => String,
:Limit => String,
:Default => String
})
# Information about an individual operating system.
OPERATING_SYSTEM_INFO_TYPE = {
:OperatingSystemId => String,
:DefaultHardDiskAdapterType => String,
:MinimumHardDiskSizeGigabytes => String,
:MinimumMemoryMegabytes => String,
:Name => String,
:InternalName => String,
:Supported => String,
:x64 => String,
:MaximumCpuCount => String,
:MinimumHardwareVersion => String,
:PersonalizationEnabled => String,
:PersonalizationAuto => String,
:SysprepPackagingSupported => String,
:SupportsMemHotAdd => String,
:cimOsId => String,
:CimVersion => String,
:SupportedForCreate => String
}
# Represents an operating system family.
OPERATING_SYSTEM_FAMILY_INFO_TYPE = {
:Name => String,
:OperatingSystemFamilyId => String,
:OperatingSystem => [OPERATING_SYSTEM_INFO_TYPE]
}
# Operating systems available for use on virtual machines owned by this
# organization.
SUPPORTED_OPERATING_SYSTEMS_INFO_TYPE = RESOURCE_TYPE.merge({
:OperatingSystemFamilyInfo => [OPERATING_SYSTEM_FAMILY_INFO_TYPE]
})
# Container for query results in records format.
# Combine with QUERY_RESULT_RECORD_TYPE subtypes to validate query results
QUERY_RESULT_RECORDS_TYPE = CONTAINER_TYPE
# Base type for a single record from query result in records format.
# Subtypes define more specific elements.
QUERY_RESULT_RECORD_TYPE = {
:href => String,
:id => Fog::Nullable::String,
:type => Fog::Nullable::String
}
# Type for a single edgeGateway query result in records format.
QUERY_RESULT_EDGE_GATEWAY_RECORD_TYPE = QUERY_RESULT_RECORD_TYPE.merge({
:gatewayStatus => String,
:haStatus => String,
:isBusy => String,
:name => String,
:numberOfExtNetworks => String,
:numberOfOrgNetworks=> String,
:vdc => String
})
FIREWALL_RULE_TYPE__PROTOCOLS = {
:Icmp => Fog::Nullable::String,
:Asny => Fog::Nullable::String,
:Other => Fog::Nullable::String
}
# Represents a firewall rule.
FIREWALL_RULE_TYPE = {
:Id => String,
:IsEnabled => String,
:MatchOnTranslate => Fog::Nullable::String,
:Description => Fog::Nullable::String,
:Policy => Fog::Nullable::String,
:IcmpSubType => Fog::Nullable::String,
:Port => Fog::Nullable::String,
:DestinationPortRange => String,
:SourcePort => Fog::Nullable::String,
:SourcePortRange => String,
:Direction => Fog::Nullable::String,
:EnableLogging => Fog::Nullable::String,
:Protocols => FIREWALL_RULE_TYPE__PROTOCOLS
}
# Represents a network firewall service.
FIREWALL_SERVICE_TYPE = {
:IsEnabled => String,
:DefaultAction => String,
:LogDefaultAction => String,
#:FirewallRule => [FIREWALL_RULE_TYPE] # not required
}
#Represents the SNAT and DNAT rules.
GATEWAY_NAT_RULE_TYPE = {
:Interface => REFERENCE_TYPE,
:OriginalIp => String,
:OriginalPort => Fog::Nullable::String,
:TranslatedIp => String,
:TranslatedPort => Fog::Nullable::String,
:Protocol => Fog::Nullable::String,
:IcmpSubType => Fog::Nullable::String
}
#Represents a NAT rule.
NAT_RULE_TYPE = {
:Description => Fog::Nullable::String,
:RuleType => String,
:IsEnabled => String,
:Id => String,
:GatewayNatRule => GATEWAY_NAT_RULE_TYPE
}
# Represents a NAT network service.
NAT_SERVICE_TYPE = {
:IsEnabled => String,
:NatType => Fog::Nullable::String,
:Policy => Fog::Nullable::String,
#:NatRule => [NAT_RULE_TYPE], # not required
:ExternalIp => Fog::Nullable::String
}
# Represents a service port in a load balancer pool.
LB_POOL_SERVICE_PORT_TYPE = {
:IsEnabled => Fog::Nullable::String,
:Protocol => String,
:Algorithm => Fog::Nullable::String,
:Port => String,
:HealthCheckPort => String,
#:HealthCheck => LBPoolHealthCheckType # not required
}
# Represents a member in a load balancer pool.
LB_POOL_MEMBER_TYPE = {
:IpAddress => String,
:Weight => String,
:ServicePort => [LB_POOL_SERVICE_PORT_TYPE]
}
# Represents a load balancer pool.
LOAD_BALANCER_POOL_TYPE = {
:Id => Fog::Nullable::String,
:Name => String,
:Description => Fog::Nullable::String,
:ServicePort => [LB_POOL_SERVICE_PORT_TYPE],
:Member => [LB_POOL_MEMBER_TYPE],
:Operational => String,
:ErrorDetails => Fog::Nullable::String
}
# Represents persistence type for a load balancer service profile.
LB_PERSISTENCE_TYPE = {
:Method => String,
:CookieName => Fog::Nullable::String,
:CookieMode => Fog::Nullable::String
}
# Represents service profile for a load balancing virtual server.
LB_VIRTUAL_SERVER_SERVICE_PROFILE_TYPE = {
:IsEnabled => String,
:Protocol => String,
:Port => String,
:Persistence => LB_PERSISTENCE_TYPE
}
# Information about a vendor service template. This is optional.
VENDOR_TEMPLATE_TYPE = {
:Name => String,
:Id => String
}
# Represents a load balancer virtual server.
LOAD_BALANCER_VIRTUAL_SERVER_TYPE = {
:IsEnabled => String,
:Name => String,
:Description => Fog::Nullable::String,
:Interface => REFERENCE_TYPE,
:IpAddress => String,
:ServiceProfile => [LB_VIRTUAL_SERVER_SERVICE_PROFILE_TYPE],
:Logging => String,
:Pool => String,
#:LoadBalancerTemplates => VENDOR_TEMPLATE_TYPE # not required
}
# Represents gateway load balancer service.
LOAD_BALANCER_SERVICE_TYPE = {
:Pool => LOAD_BALANCER_POOL_TYPE,
:VirtualServer => LOAD_BALANCER_VIRTUAL_SERVER_TYPE,
:IsEnabled => Fog::Nullable::String
}
# Represents Gateway DHCP service.
GATEWAY_DHCP_SERVICE_TYPE = {
:IsEnabled => String,
#:Pool => DHCP_POOL_SERVICE_TYPE # not required
}
# Represents edge gateway services.
GATEWAY_FEATURES_TYPE = {
#:StaticRoutingService => STATIC_ROUTING_SERVICE_TYPE, #not required
#:GatewayIpsecVpnService => GATEWAY_IPSEC_VPN_SERVICE_TYPE, #not required
#:GatewayDhcpService => GATEWAY_DHCP_SERVICE_TYPE, #not required
#:LoadBalancerService => LOAD_BALANCER_SERVICE_TYPE, #not required
#:NatService => NAT_SERVICE_TYPE, #not required
:FirewallService => FIREWALL_SERVICE_TYPE
}
# Represents a range of IP addresses, start and end inclusive.
IP_RANGE_TYPE = {
:StartAddress => String,
:EndAddress => String
}
# Represents a list of IP ranges.
IP_RANGES_TYPE = {
:IpRange => [IP_RANGE_TYPE]
}
# Allows to chose which subnets a gateway can be part of
SUBNET_PARTICIPATION_TYPE = {
:Gateway => String,
:Netmask => String,
:IpAddress => String,
:IpRanges => IP_RANGES_TYPE
}
# Gateway Interface configuration.
GATEWAY_INTERFACE_TYPE = {
:Name => String,
:DisplayName => String,
:Network => REFERENCE_TYPE,
:InterfaceType => String,
#:SubnetParticipation => [SUBNET_PARTICIPATION_TYPE], #bug in parser means list or hash
:ApplyRateLimit => String,
:InRateLimit => Fog::Nullable::String,
:OutRateLimit => Fog::Nullable::String,
:UseForDefaultRoute => String,
}
# A list of Gateway Interfaces.
GATEWAY_INTERFACES_TYPE = {
:GatewayInterface => [GATEWAY_INTERFACE_TYPE]
}
# Gateway Configuration.
GATEWAY_CONFIGURATION_TYPE = {
:BackwardCompatibilityMode => Fog::Nullable::String,
:GatewayBackingConfig => String,
:GatewayInterfaces => GATEWAY_INTERFACES_TYPE,
:EdgeGatewayServiceConfiguration => GATEWAY_FEATURES_TYPE,
:HaEnabled => Fog::Nullable::String,
:UseDefaultRouteForDnsRelay => Fog::Nullable::String
}
# Represents a gateway.
GATEWAY_TYPE = {
:href => String,
:type => String,
:id => String,
:operationKey => Fog::Nullable::String,
:name => String,
:status => Fog::Nullable::String,
#:Link => LINK_TYPE, # not required
:Description => Fog::Nullable::String,
#:Tasks => TASKS_IN_PROGRESS_TYPE, # not required
:Configuration => GATEWAY_CONFIGURATION_TYPE
}
ORGANIZATION_REFERENCE_TYPE = REFERENCE_TYPE
PROVIDER_VDC_REFERENCE_TYPE = REFERENCE_TYPE
RIGHT_REFERENCE_TYPE = REFERENCE_TYPE
ROLE_REFERENCE_TYPE = REFERENCE_TYPE
# Represents the admin view of this cloud.
ORGANIZATION_REFERENCES_TYPE = {
:OrganizationReference => [REFERENCE_TYPE]
}
# Container for references to Provider vDCs.
PROVIDER_VDC_REFERENCES_TYPE = {
:ProviderVdcReference => [PROVIDER_VDC_REFERENCE_TYPE]
}
# Container for references to rights.
RIGHT_REFERENCES_TYPE = {
:RightReference => [RIGHT_REFERENCE_TYPE]
}
# Container for references to roles.
ROLE_REFERENCES_TYPE = {
:RoleReference => [ROLE_REFERENCE_TYPE]
}
# Container for references to ExternalNetwork objects.
NETWORKS_TYPE = {
:Network => [REFERENCE_TYPE]
}
NETWORK_CONFIGURATION_TYPE = {
:IpScopes => {
:IpScope => {
:IsInherited => String,
:Gateway => Fog::Nullable::String,
:Netmask => String,
:Dns1 => String,
:Dns2 => String,
:DnsSuffix => String,
:IsEnabled=> String,
:IpRanges=> IP_RANGES_TYPE,
}
},
:FenceMode => Fog::Nullable::String,
:RetainNetInfoAcrossDeployments => String,
}
NETWORK_TYPE = {
:name => String,
:href => String,
:type => String,
:id => String,
:Description => String,
:Configuration => NETWORK_CONFIGURATION_TYPE,
:IsShared => String,
}
VCLOUD_TYPE = ENTITY_TYPE.merge({
:OrganizationReferences => ORGANIZATION_REFERENCES_TYPE,
:ProviderVdcReferences => PROVIDER_VDC_REFERENCES_TYPE,
:RightReferences => RIGHT_REFERENCES_TYPE,
:RoleReferences => ROLE_REFERENCES_TYPE,
:Networks => NETWORKS_TYPE
})
# Represents a named disk.
DISK_TYPE = RESOURCE_ENTITY_TYPE.merge({
:busSubType => Fog::Nullable::String,
:busType => Fog::Nullable::String,
:size => String,
:StorageProfile => REFERENCE_TYPE,
:Owner => OWNER_TYPE
})
VMS_TYPE = RESOURCE_TYPE.merge({
:VmReference => [REFERENCE_TYPE]
})
end
end
end