Class: Morpheus::DeploymentsInterface

Inherits:
RestInterface show all
Defined in:
lib/morpheus/api/deployments_interface.rb

Constant Summary

Constants inherited from APIClient

APIClient::CLIENT_ID

Instance Method Summary collapse

Methods inherited from RestInterface

#create, #destroy, #get, #list, #update

Methods inherited from APIClient

#account_groups, #account_users, #accounts, #activity, #appliance_settings, #approvals, #apps, #archive_buckets, #archive_files, #audit, #auth, #authorization_required?, #backup_jobs, #backup_restores, #backup_results, #backup_service_types, #backup_services, #backup_settings, #backup_types, #backups, #billing, #blueprints, #budgets, #catalog, #catalog_item_types, #certificate_types, #certificates, #client_id, #client_id=, #clients, #cloud_datastores, #cloud_folders, #cloud_policies, #cloud_resource_pools, #clouds, #clusters, #common_interface_options, #containers, #credential_types, #credentials, #cypher, #dashboard, #datastores, #default_content_type, #default_timeout, #deploy, #deployments, #dry, #dry_run, #email_templates, #environments, #execute, #execute_schedules, #execution_request, #file_copy_request, #forgot, #group_policies, #groups, #guidance, #guidance_settings, #health, #hub, #image_builder, #initialize, #inspect, #instance_types, #instances, #integration_types, #integrations, #interface, #invoice_line_items, #invoices, #jobs, #key_pairs, #library_cluster_layouts, #library_cluster_packages, #library_container_scripts, #library_container_templates, #library_container_types, #library_container_upgrades, #library_instance_types, #library_layouts, #library_operating_systems, #library_spec_template_types, #library_spec_templates, #license, #load_balancer_monitors, #load_balancer_pool_nodes, #load_balancer_pools, #load_balancer_pools_secondary, #load_balancer_profiles, #load_balancer_types, #load_balancer_virtual_servers, #load_balancers, #log_settings, #logged_in?, #login, #logout, #logs, #monitoring, #monitoring_settings, #network_dhcp_relays, #network_dhcp_servers, #network_domain_records, #network_domains, #network_edge_clusters, #network_floating_ips, #network_groups, #network_pool_ips, #network_pool_server_types, #network_pool_servers, #network_pools, #network_proxies, #network_resource_types, #network_routers, #network_security_server_types, #network_security_servers, #network_server_groups, #network_server_services, #network_server_types, #network_servers, #network_services, #network_static_routes, #network_types, #networks, #old_cypher, #option_type_forms, #option_type_lists, #option_types, #options, #packages, #ping, #plugins, #policies, #power_schedules, #price_sets, #prices, #processes, #projects, #provision_types, #provisioning_license_types, #provisioning_licenses, #provisioning_settings, #reports, #resource_pool_groups, #rest, #roles, #scale_thresholds, #search, #security_group_rules, #security_groups, #security_package_types, #security_packages, #security_scans, #server_types, #servers, #service_plans, #set_ssl_verification_enabled, #setopts, #setup, #snapshots, #ssl_verification_enabled?, #storage_providers, #storage_server_types, #storage_servers, #storage_volume_types, #storage_volumes, #subnet_types, #subnets, #task_sets, #tasks, #to_s, #url, #usage, #use_refresh_token, #user_groups, #user_settings, #user_sources, #users, #vdi, #vdi_allocations, #vdi_apps, #vdi_gateways, #vdi_pools, #virtual_images, #whitelabel_settings, #whoami, #wiki, #withopts

Constructor Details

This class inherits a constructor from Morpheus::APIClient

Instance Method Details

#base_pathObject



5
6
7
# File 'lib/morpheus/api/deployments_interface.rb', line 5

def base_path
  "/api/deployments"
end

#create_version(deployment_id, payload, params = {}) ⇒ Object



18
19
20
# File 'lib/morpheus/api/deployments_interface.rb', line 18

def create_version(deployment_id, payload, params={})
  execute(method: :post, url: "#{base_path}/#{deployment_id}/versions", params: params, payload: payload.to_json)
end

#destroy_file(deployment_id, id, destination, params = {}) ⇒ Object

upload a file without multipart local_file is the full absolute local filename destination should be the full remote file path, including the file name.



64
65
66
67
68
69
70
71
72
73
74
75
76
77
# File 'lib/morpheus/api/deployments_interface.rb', line 64

def destroy_file(deployment_id, id, destination, params={})
  if destination.empty? || destination == "/" || destination == "." || destination.include?("../")
    raise "#{self.class}.upload_file() passed a bad destination: '#{destination}'"
  end
  # url = "#{@base_url}/#{base_path}/#{deployment_id}/versions/#{id}/files"
  url = "#{base_path}/#{deployment_id}/versions/#{id}/files"
  if !destination.to_s.empty?
    url += "/#{destination}"
  end
  # use URI to escape path
  uri = URI.parse(url)
  url = uri.path
  execute(method: :delete, url: url, params: params)
end

#destroy_version(deployment_id, id, params = {}) ⇒ Object



27
28
29
30
# File 'lib/morpheus/api/deployments_interface.rb', line 27

def destroy_version(deployment_id, id, params = {})
  validate_id!(id)
  execute(method: :delete, url: "#{base_path}/#{deployment_id}/versions/#{id}", params: params)
end

#get_version(deployment_id, id, params = {}) ⇒ Object



13
14
15
16
# File 'lib/morpheus/api/deployments_interface.rb', line 13

def get_version(deployment_id, id, params={})
  validate_id!(id)
  execute(method: :get, url: "#{base_path}/#{deployment_id}/versions/#{id}", params: params)
end

#list_files(deployment_id, id, params = {}) ⇒ Object



32
33
34
# File 'lib/morpheus/api/deployments_interface.rb', line 32

def list_files(deployment_id, id, params={})
  execute(method: :get, url: "#{base_path}/#{deployment_id}/versions/#{id}/files", params: params)
end

#list_versions(deployment_id, params = {}) ⇒ Object



9
10
11
# File 'lib/morpheus/api/deployments_interface.rb', line 9

def list_versions(deployment_id, params={})
  execute(method: :get, url: "#{base_path}/#{deployment_id}/versions", params: params)
end

#update_version(deployment_id, id, payload, params = {}) ⇒ Object



22
23
24
25
# File 'lib/morpheus/api/deployments_interface.rb', line 22

def update_version(deployment_id, id, payload, params={})
  validate_id!(id)
  execute(method: :put, url: "#{base_path}/#{deployment_id}/versions/#{id}", params: params, payload: payload.to_json)
end

#upload_file(deployment_id, id, local_file, destination, params = {}) ⇒ Object

upload a file without multipart local_file is the full absolute local filename destination should be the full remote file path, including the file name.



39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
# File 'lib/morpheus/api/deployments_interface.rb', line 39

def upload_file(deployment_id, id, local_file, destination, params={})
  if destination.empty? || destination == "/" || destination == "." || destination.include?("../")
    raise "#{self.class}.upload_file() passed a bad destination: '#{destination}'"
  end
  # url = "#{@base_url}/#{base_path}/#{deployment_id}/versions/#{id}/files"
  url = "#{base_path}/#{deployment_id}/versions/#{id}/files"
  if !destination.to_s.empty?
    url += "/#{destination}"
  end
  # use URI to escape path
  uri = URI.parse(url)
  url = uri.path
  # params[:filename] = File.basename(destination)
  if !local_file.kind_of?(File)
    local_file = File.new(local_file, 'rb')
  end
  payload = local_file
  headers = {'Content-Type' => 'application/octet-stream'}
  headers['Content-Length'] = local_file.size # File.size(local_file)
  execute(method: :post, url: url, headers: headers, payload: payload, params: params, timeout: 172800)
end