Class: Morpheus::APIClient

Inherits:
Object
  • Object
show all
Defined in:
lib/morpheus/api/api_client.rb

Overview

require ‘rest-client’

Direct Known Subclasses

AccountGroupsInterface, ActivityInterface, ApplianceSettingsInterface, ApprovalsInterface, AppsInterface, ArchiveBucketsInterface, ArchiveFilesInterface, AuthInterface, BackupSettingsInterface, BillingInterface, BlueprintsInterface, BudgetsInterface, CloudDatastoresInterface, CloudFoldersInterface, CloudPoliciesInterface, CloudResourcePoolsInterface, CloudsInterface, ClustersInterface, ContainersInterface, CustomInstanceTypesInterface, CypherInterface, DashboardInterface, DatastoresInterface, DeployInterface, DocInterface, EnvironmentsInterface, ExecuteSchedulesInterface, ExecutionRequestInterface, FileCopyRequestInterface, ForgotPasswordInterface, GroupPoliciesInterface, GroupsInterface, GuidanceInterface, HealthInterface, ImageBuilderBootScriptsInterface, ImageBuilderImageBuildsInterface, ImageBuilderInterface, ImageBuilderPreseedScriptsInterface, InstanceTypesInterface, InstancesInterface, InvoicesInterface, JobsInterface, KeyPairsInterface, LibraryClusterLayoutsInterface, LibraryContainerScriptsInterface, LibraryContainerTemplatesInterface, LibraryContainerTypesInterface, LibraryContainerUpgradesInterface, LibraryInstanceTypesInterface, LibraryLayoutsInterface, LibrarySpecTemplateTypesInterface, LibrarySpecTemplatesInterface, LicenseInterface, LogSettingsInterface, LogsInterface, MonitoringAlertsInterface, MonitoringAppsInterface, MonitoringChecksInterface, MonitoringContactsInterface, MonitoringGroupsInterface, MonitoringIncidentsInterface, MonitoringInterface, NetworkDomainRecordsInterface, NetworkDomainsInterface, NetworkGroupsInterface, NetworkPoolIpsInterface, NetworkPoolServersInterface, NetworkPoolsInterface, NetworkProxiesInterface, NetworkRoutersInterface, NetworkSecurityServersInterface, NetworkServicesInterface, NetworkSubnetsInterface, NetworkTypesInterface, NetworksInterface, OptionTypeListsInterface, OptionTypesInterface, OptionsInterface, PackagesInterface, PingInterface, PoliciesInterface, PowerSchedulesInterface, PriceSetsInterface, PricesInterface, ProcessesInterface, ProjectsInterface, ProvisionTypesInterface, ProvisioningLicenseTypesInterface, ProvisioningLicensesInterface, ProvisioningSettingsInterface, ReadInterface, ReportsInterface, RestInterface, RolesInterface, SearchInterface, SecondaryReadInterface, SecondaryRestInterface, SecurityGroupRulesInterface, SecurityGroupsInterface, ServerTypesInterface, ServersInterface, ServiceCatalogInterface, ServicePlansInterface, SetupInterface, StorageProvidersInterface, SubnetTypesInterface, SubnetsInterface, TaskSetsInterface, TasksInterface, UsageInterface, UserGroupsInterface, UserSettingsInterface, UserSourcesInterface, VdiInterface, VirtualImagesInterface, WhitelabelSettingsInterface, WhoamiInterface, WikiInterface

Constant Summary collapse

CLIENT_ID =
'morph-cli'

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(access_token, refresh_token = nil, expires_in = nil, base_url = nil, verify_ssl = true, options = {}) ⇒ APIClient

Initialize a new APIClient

client = APIClient.new(url:"https://morpheus.yourcompany.com", verify_ssl:false)

This old method signature is being deprecated:

client = APIClient.new(access_token, refresh_token, expires_in, base_url, verify_ssl, options={})

def initialize(attrs={}, options={})



18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
# File 'lib/morpheus/api/api_client.rb', line 18

def initialize(access_token, refresh_token=nil,expires_in = nil, base_url=nil, verify_ssl=true, options={})
  self.client_id = CLIENT_ID
  attrs = {}
  if access_token.is_a?(Hash)
    attrs = access_token.clone()
    access_token = attrs[:access_token]
    refresh_token = attrs[:refresh_token]
    base_url = attrs[:url] || attrs[:base_url]
    expires_in = attrs[:expires_in]
    verify_ssl = attrs.key?(:verify_ssl) ? attrs[:verify_ssl] : true
    self.client_id = attrs[:client_id] ? attrs[:client_id] : CLIENT_ID
    if attrs[:client_id]
      self.client_id = attrs[:client_id]
    end
    options = refresh_token.is_a?(Hash) ? refresh_token.clone() : {}
  end
  @access_token = access_token
  @refresh_token = refresh_token
  @base_url = base_url
  if @base_url.to_s.empty?
    raise "#{self.class} initialized without a required option :url"
  end
  @base_url = @base_url.chomp("/")
  # todo: validate URI
  if expires_in != nil
    @expires_at = Time.now + expires_in
  end
  set_ssl_verification_enabled(verify_ssl)
  setopts(options)
end

Instance Attribute Details

#client_idObject

Returns the value of attribute client_id.



11
12
13
# File 'lib/morpheus/api/api_client.rb', line 11

def client_id
  @client_id
end

Instance Method Details

#account_groupsObject



386
387
388
# File 'lib/morpheus/api/api_client.rb', line 386

def 
  Morpheus::AccountGroupsInterface.new(common_interface_options).setopts(@options)
end

#account_usersObject



550
551
552
# File 'lib/morpheus/api/api_client.rb', line 550

def 
  Morpheus::AccountUsersInterface.new(common_interface_options).setopts(@options)
end

#accountsObject



538
539
540
# File 'lib/morpheus/api/api_client.rb', line 538

def accounts
  Morpheus::AccountsInterface.new(common_interface_options).setopts(@options)
end

#activityObject



374
375
376
# File 'lib/morpheus/api/api_client.rb', line 374

def activity
  Morpheus::ActivityInterface.new(common_interface_options).setopts(@options)
end

#appliance_settingsObject



418
419
420
# File 'lib/morpheus/api/api_client.rb', line 418

def appliance_settings
  Morpheus::ApplianceSettingsInterface.new(common_interface_options).setopts(@options)
end

#approvalsObject



542
543
544
# File 'lib/morpheus/api/api_client.rb', line 542

def approvals
  Morpheus::ApprovalsInterface.new(common_interface_options).setopts(@options)
end

#appsObject



510
511
512
# File 'lib/morpheus/api/api_client.rb', line 510

def apps
  Morpheus::AppsInterface.new(common_interface_options).setopts(@options)
end

#archive_bucketsObject



684
685
686
# File 'lib/morpheus/api/api_client.rb', line 684

def archive_buckets
  Morpheus::ArchiveBucketsInterface.new(common_interface_options).setopts(@options)
end

#archive_filesObject



688
689
690
# File 'lib/morpheus/api/api_client.rb', line 688

def archive_files
  Morpheus::ArchiveFilesInterface.new(common_interface_options).setopts(@options)
end

#auditObject



804
805
806
# File 'lib/morpheus/api/api_client.rb', line 804

def audit
  Morpheus::AuditInterface.new(common_interface_options).setopts(@options)
end

#authObject



349
350
351
352
# File 'lib/morpheus/api/api_client.rb', line 349

def auth
  # Morpheus::AuthInterface.new(common_interface_options).setopts(@options)
  Morpheus::AuthInterface.new({url: @base_url, client_id: @client_id, verify_ssl: @verify_ssl}).setopts(@options)
end

#authorization_required?Boolean

Authorization is required, except for a couple commands like Ping and Setup

Returns:

  • (Boolean)


93
94
95
# File 'lib/morpheus/api/api_client.rb', line 93

def authorization_required?
  true
end

#backup_jobsObject



832
833
834
# File 'lib/morpheus/api/api_client.rb', line 832

def backup_jobs
  Morpheus::BackupJobsInterface.new(common_interface_options).setopts(@options)
end

#backup_settingsObject



784
785
786
# File 'lib/morpheus/api/api_client.rb', line 784

def backup_settings
  Morpheus::BackupSettingsInterface.new(common_interface_options).setopts(@options)
end

#backupsObject



828
829
830
# File 'lib/morpheus/api/api_client.rb', line 828

def backups
  Morpheus::BackupsInterface.new(common_interface_options).setopts(@options)
end

#billingObject



848
849
850
# File 'lib/morpheus/api/api_client.rb', line 848

def billing
  Morpheus::BillingInterface.new(common_interface_options).setopts(@options)
end

#blueprintsObject



514
515
516
# File 'lib/morpheus/api/api_client.rb', line 514

def blueprints
  Morpheus::BlueprintsInterface.new(common_interface_options).setopts(@options)
end

#budgetsObject



808
809
810
# File 'lib/morpheus/api/api_client.rb', line 808

def budgets
  Morpheus::BudgetsInterface.new(common_interface_options).setopts(@options)
end

#catalogObject



840
841
842
# File 'lib/morpheus/api/api_client.rb', line 840

def catalog
  Morpheus::ServiceCatalogInterface.new(common_interface_options).setopts(@options)
end

#catalog_item_typesObject



836
837
838
# File 'lib/morpheus/api/api_client.rb', line 836

def catalog_item_types
  Morpheus::CatalogItemTypesInterface.new(common_interface_options).setopts(@options)
end

#certificate_typesObject



578
579
580
# File 'lib/morpheus/api/api_client.rb', line 578

def certificate_types
  Morpheus::CertificateTypesInterface.new(common_interface_options).setopts(@options)
end

#certificatesObject



574
575
576
# File 'lib/morpheus/api/api_client.rb', line 574

def certificates
  Morpheus::CertificatesInterface.new(common_interface_options).setopts(@options)
end

#cloud_datastoresObject



394
395
396
# File 'lib/morpheus/api/api_client.rb', line 394

def cloud_datastores
  Morpheus::CloudDatastoresInterface.new(common_interface_options).setopts(@options)
end

#cloud_foldersObject



402
403
404
# File 'lib/morpheus/api/api_client.rb', line 402

def cloud_folders
  Morpheus::CloudFoldersInterface.new(common_interface_options).setopts(@options)
end

#cloud_policiesObject



624
625
626
# File 'lib/morpheus/api/api_client.rb', line 624

def cloud_policies
  Morpheus::CloudPoliciesInterface.new(common_interface_options).setopts(@options)
end

#cloud_resource_poolsObject



398
399
400
# File 'lib/morpheus/api/api_client.rb', line 398

def cloud_resource_pools
  Morpheus::CloudResourcePoolsInterface.new(common_interface_options).setopts(@options)
end

#cloudsObject



390
391
392
# File 'lib/morpheus/api/api_client.rb', line 390

def clouds
  Morpheus::CloudsInterface.new(common_interface_options).setopts(@options)
end

#clustersObject



534
535
536
# File 'lib/morpheus/api/api_client.rb', line 534

def clusters
  Morpheus::ClustersInterface.new(common_interface_options).setopts(@options)
end

#common_interface_optionsObject



326
327
328
329
330
331
332
333
334
335
# File 'lib/morpheus/api/api_client.rb', line 326

def common_interface_options
  {
    url:           @base_url,
    access_token:  @access_token,
    refresh_token: @refresh_token,
    expires_at:    @expires_at,
    client_id:     @client_id,
    verify_ssl:    @verify_ssl
  }
end

#containersObject



434
435
436
# File 'lib/morpheus/api/api_client.rb', line 434

def containers
  Morpheus::ContainersInterface.new(common_interface_options).setopts(@options)
end

#cypherObject



756
757
758
# File 'lib/morpheus/api/api_client.rb', line 756

def cypher
  Morpheus::CypherInterface.new(common_interface_options).setopts(@options)
end

#dashboardObject



370
371
372
# File 'lib/morpheus/api/api_client.rb', line 370

def dashboard
  Morpheus::DashboardInterface.new(common_interface_options).setopts(@options)
end

#datastoresObject



406
407
408
# File 'lib/morpheus/api/api_client.rb', line 406

def datastores
  Morpheus::DatastoresInterface.new(common_interface_options).setopts(@options)
end

#default_content_typeObject

set this in your interface, eg. to ‘application/json’ or let it it default to json when payload is present.



80
81
82
# File 'lib/morpheus/api/api_client.rb', line 80

def default_content_type
  nil
end

#default_timeoutObject

set default seconds for interface to timeout after or let it use system default? none, it should not timeout by default.. I think execute() may use 30 seconds for get by default. and it should remove timeout when method is post, put, or delete



88
89
90
# File 'lib/morpheus/api/api_client.rb', line 88

def default_timeout
  nil
end

#deployObject



518
519
520
# File 'lib/morpheus/api/api_client.rb', line 518

def deploy
  Morpheus::DeployInterface.new(common_interface_options).setopts(@options)
end

#deploymentsObject



522
523
524
# File 'lib/morpheus/api/api_client.rb', line 522

def deployments
  Morpheus::DeploymentsInterface.new(common_interface_options).setopts(@options)
end

#docObject



337
338
339
# File 'lib/morpheus/api/api_client.rb', line 337

def doc
  Morpheus::DocInterface.new(common_interface_options).setopts(@options)
end

#dryObject



66
67
68
# File 'lib/morpheus/api/api_client.rb', line 66

def dry()
  dry_run(true)
end

#dry_run(val = true) ⇒ Object



61
62
63
64
# File 'lib/morpheus/api/api_client.rb', line 61

def dry_run(val=true)
  @dry_run = !!val
  self
end

#environmentsObject



780
781
782
# File 'lib/morpheus/api/api_client.rb', line 780

def environments
  Morpheus::EnvironmentsInterface.new(common_interface_options).setopts(@options)
end

#execute(opts, options = {}) ⇒ Object

Execute an HTTP request with this client. opts - Hash of options for HTTP Request.

:url - The full url
:method - The default method is :get (GET)
:headers - Hash of headers to include in the request.
           eg. {'Content-Type' => 'application/json'}. :params is a special key for query parameters.
:params - query parameters
:payload - The body of the request.
:timeout - A custom timeout in seconds for api requests. The default is 30. todo: separate timeout options

options - Hash of common global options that commands parse. eg. :headers, :timeout, :dry_run, :curl, etc

:headers - Extra headers to add. This expects a Hash like {'Content-Type' => 'application/json'}.
:timeout - A custom timeout in seconds for api requests. The default is 30. todo: separate timeout options


150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
# File 'lib/morpheus/api/api_client.rb', line 150

def execute(opts, options={})
  # Morpheus::Logging::DarkPrinter.puts "Morpheus::RestClient.execute(#{opts})" if Morpheus::Logging.debug?
  # ok, always prepend @base_url, let the caller specify it exactly or leave it off.
  # this allows the Interface definition be lazy and not specify the base_url in every call to execute()
    # it will be used though...
  if opts[:url]
    if !opts[:url].include?(@base_url)
      opts[:url] = "#{@base_url}#{opts[:url]}"
    end
  end
  # merge in common global @options
  if @options
    options = options.merge(@options)
  else
    options = options.clone
  end

  # determine HTTP method
  if opts[:method].nil?
    opts[:method] = :get
  else
    # convert to lowercase Symbol like :get, :post, :put, or :delete
    opts[:method] = opts[:method].to_s.downcase.to_sym
  end

  # could validate method here...

  # apply default headers
  opts[:headers] ||= {}

  is_multipart = (opts[:payload].is_a?(Hash) && opts[:payload][:multipart] == true)

  # Authorization: apply our access token
  if authorization_required?
    if @access_token
      if opts[:headers][:authorization].nil? && opts[:headers]['Authorization'].nil?
        opts[:headers][:authorization] = "Bearer #{@access_token}"
      else
        # authorization header has already been set.
      end
    end
  end

  # POST and PUT requests default Content-Type is application/json
  # set Content-Type or pass :form_data => true if you want application/x-www-form-urlencoded
  # or use opts[:payload][:multipart] = true if you need multipart/form-data
  if opts[:method] == :post || opts[:method] == :put
    if opts[:headers]['Content-Type'].nil? && opts[:payload] && is_multipart != true && opts[:form_data] != true
      opts[:headers]['Content-Type'] = (default_content_type || 'application/json')
    end

    # Auto encode payload as JSON, just to be nice
    if opts[:headers]['Content-Type'] == 'application/json' && !opts[:payload].is_a?(String)
      opts[:payload] = opts[:payload].to_json
    end

  end

  # always use custom timeout eg. from --timeout option
  # or use default_timeout for GET requests only.
  if opts[:timeout].nil?
    if options[:timeout]
      opts[:timeout] = options[:timeout].to_f
    elsif default_timeout && opts[:method] == :get
      opts[:timeout] = default_timeout.to_f
    end
  end

  # add extra headers, eg. from --header option
  # headers should be a Hash and not an Array, dont make me split you here!
  if options[:headers]
    opts[:headers] = opts[:headers].merge(options[:headers])
  end

  # this is confusing, but RestClient expects :params inside the headers...?
  # move/copy params to headers.params for simplification.
  # remove this if issues arise
  # if opts[:params] && (opts[:headers][:params].nil? || opts[:headers][:params].empty?)
  #   opts[:headers][:params] = opts.delete(:params) # .delete(:params) maybe?
  # end

  # :command_options for these
  # if options[:curl]
  #   opts[:curl] = options[:curl]
  # end
  # if options.key?(:pretty_json)
  #   opts[:pretty_json] = options[:pretty_json]
  # end
  # if options.key?(:scrub)
  #   opts[:scrub] = options[:scrub]
  # end

  # @verify_ssl is not used atm
  # todo: finish this and use it instead of the global variable RestClient.ssl_verification_enabled?
  # gotta clean up all APIClient subclasses new() methods to support this
  # the CliCommand subclasses should be changed to @foos_interface = @api_client.foos
  # also.. Credentials.new()
  if @verify_ssl == false
    opts[:verify_ssl] = OpenSSL::SSL::VERIFY_NONE
  end

  if @dry_run
    # JD: could return a Request object instead...
    # print_dry_run needs options somehow...
    opts[:command_options] = options # trash this..we got @options with setopts now
    return opts
  end

  # uhh can't use LIST at the moment
  # fix it!
  # if opts[:method] == :list
  #   opts[:method]
  # end

  # Morpheus::Logging::DarkPrinter.puts "Morpheus::RestClient.execute(#{opts})" if Morpheus::Logging.debug?
  # instead, using ::RestClient.log = STDOUT
  response = Morpheus::RestClient.execute(opts)
  if opts[:parse_json] != false && options[:parse_json] != false
    return JSON.parse(response.to_s)
  else
    return response
  end
end

#execute_schedulesObject



598
599
600
# File 'lib/morpheus/api/api_client.rb', line 598

def execute_schedules
  Morpheus::ExecuteSchedulesInterface.new(common_interface_options).setopts(@options)
end

#execution_requestObject



764
765
766
# File 'lib/morpheus/api/api_client.rb', line 764

def execution_request
  Morpheus::ExecutionRequestInterface.new(common_interface_options).setopts(@options)
end

#file_copy_requestObject



768
769
770
# File 'lib/morpheus/api/api_client.rb', line 768

def file_copy_request
  Morpheus::FileCopyRequestInterface.new(common_interface_options).setopts(@options)
end

#forgotObject



354
355
356
# File 'lib/morpheus/api/api_client.rb', line 354

def forgot
  Morpheus::ForgotPasswordInterface.new(common_interface_options).setopts(@options)
end

#group_policiesObject



620
621
622
# File 'lib/morpheus/api/api_client.rb', line 620

def group_policies
  Morpheus::GroupPoliciesInterface.new(common_interface_options).setopts(@options)
end

#groupsObject



382
383
384
# File 'lib/morpheus/api/api_client.rb', line 382

def groups
  Morpheus::GroupsInterface.new(common_interface_options).setopts(@options)
end

#guidanceObject



820
821
822
# File 'lib/morpheus/api/api_client.rb', line 820

def guidance
  Morpheus::GuidanceInterface.new(common_interface_options).setopts(@options)
end

#healthObject



800
801
802
# File 'lib/morpheus/api/api_client.rb', line 800

def health
  Morpheus::HealthInterface.new(common_interface_options).setopts(@options)
end

#image_builderObject



692
693
694
# File 'lib/morpheus/api/api_client.rb', line 692

def image_builder
  Morpheus::ImageBuilderInterface.new(common_interface_options).setopts(@options)
end

#inspectObject



57
58
59
# File 'lib/morpheus/api/api_client.rb', line 57

def inspect
  to_s
end

#instance_typesObject



438
439
440
# File 'lib/morpheus/api/api_client.rb', line 438

def instance_types
  Morpheus::InstanceTypesInterface.new(common_interface_options).setopts(@options)
end

#instancesObject



414
415
416
# File 'lib/morpheus/api/api_client.rb', line 414

def instances
  Morpheus::InstancesInterface.new(common_interface_options).setopts(@options)
end

#integration_typesObject



446
447
448
# File 'lib/morpheus/api/api_client.rb', line 446

def integration_types
  Morpheus::IntegrationTypesInterface.new(common_interface_options).setopts(@options)
end

#integrationsObject



442
443
444
# File 'lib/morpheus/api/api_client.rb', line 442

def integrations
  Morpheus::IntegrationsInterface.new(common_interface_options).setopts(@options)
end

#interface(type) ⇒ Object Also known as: get_interface



896
897
898
899
900
901
902
903
# File 'lib/morpheus/api/api_client.rb', line 896

def interface(type)
  type = type.to_s.singularize.underscore
  interface_name = type.pluralize
  if !respond_to?(interface_name)
    raise "#{self.class} has not defined an interface method named '#{interface_name}'"
  end
  return send(interface_name)
end

#invoice_line_itemsObject



816
817
818
# File 'lib/morpheus/api/api_client.rb', line 816

def invoice_line_items
  Morpheus::InvoiceLineItemsInterface.new(common_interface_options).setopts(@options)
end

#invoicesObject



812
813
814
# File 'lib/morpheus/api/api_client.rb', line 812

def invoices
  Morpheus::InvoicesInterface.new(common_interface_options).setopts(@options)
end

#jobsObject



450
451
452
# File 'lib/morpheus/api/api_client.rb', line 450

def jobs
  Morpheus::JobsInterface.new(common_interface_options).setopts(@options)
end

#key_pairsObject



570
571
572
# File 'lib/morpheus/api/api_client.rb', line 570

def key_pairs
  Morpheus::KeyPairsInterface.new(common_interface_options).setopts(@options)
end

#library_cluster_layoutsObject



740
741
742
# File 'lib/morpheus/api/api_client.rb', line 740

def library_cluster_layouts
  Morpheus::LibraryClusterLayoutsInterface.new(common_interface_options).setopts(@options)
end

#library_container_scriptsObject



732
733
734
# File 'lib/morpheus/api/api_client.rb', line 732

def library_container_scripts
  Morpheus::LibraryContainerScriptsInterface.new(common_interface_options).setopts(@options)
end

#library_container_templatesObject



736
737
738
# File 'lib/morpheus/api/api_client.rb', line 736

def library_container_templates
  Morpheus::LibraryContainerTemplatesInterface.new(common_interface_options).setopts(@options)
end

#library_container_typesObject



728
729
730
# File 'lib/morpheus/api/api_client.rb', line 728

def library_container_types
  Morpheus::LibraryContainerTypesInterface.new(common_interface_options).setopts(@options)
end

#library_container_upgradesObject



724
725
726
# File 'lib/morpheus/api/api_client.rb', line 724

def library_container_upgrades
  Morpheus::LibraryContainerUpgradesInterface.new(common_interface_options).setopts(@options)
end

#library_instance_typesObject



716
717
718
# File 'lib/morpheus/api/api_client.rb', line 716

def library_instance_types
  Morpheus::LibraryInstanceTypesInterface.new(common_interface_options).setopts(@options)
end

#library_layoutsObject



720
721
722
# File 'lib/morpheus/api/api_client.rb', line 720

def library_layouts
  Morpheus::LibraryLayoutsInterface.new(common_interface_options).setopts(@options)
end

#library_spec_template_typesObject



748
749
750
# File 'lib/morpheus/api/api_client.rb', line 748

def library_spec_template_types
  Morpheus::LibrarySpecTemplateTypesInterface.new(common_interface_options).setopts(@options)
end

#library_spec_templatesObject



744
745
746
# File 'lib/morpheus/api/api_client.rb', line 744

def library_spec_templates
  Morpheus::LibrarySpecTemplatesInterface.new(common_interface_options).setopts(@options)
end

#licenseObject



582
583
584
# File 'lib/morpheus/api/api_client.rb', line 582

def license
  Morpheus::LicenseInterface.new(common_interface_options).setopts(@options)
end

#load_balancer_monitorsObject



494
495
496
# File 'lib/morpheus/api/api_client.rb', line 494

def load_balancer_monitors
  Morpheus::LoadBalancerMonitorsInterface.new(common_interface_options).setopts(@options)
end

#load_balancer_poolsObject



486
487
488
# File 'lib/morpheus/api/api_client.rb', line 486

def load_balancer_pools
  Morpheus::LoadBalancerPoolsInterface.new(common_interface_options).setopts(@options)
end

#load_balancer_profilesObject



490
491
492
# File 'lib/morpheus/api/api_client.rb', line 490

def load_balancer_profiles
  Morpheus::LoadBalancerProfilesInterface.new(common_interface_options).setopts(@options)
end

#load_balancer_typesObject



478
479
480
# File 'lib/morpheus/api/api_client.rb', line 478

def load_balancer_types
  Morpheus::LoadBalancerTypesInterface.new(common_interface_options).setopts(@options)
end

#load_balancer_virtual_serversObject



482
483
484
# File 'lib/morpheus/api/api_client.rb', line 482

def load_balancer_virtual_servers
  Morpheus::LoadBalancerVirtualServersInterface.new(common_interface_options).setopts(@options)
end

#load_balancersObject



474
475
476
# File 'lib/morpheus/api/api_client.rb', line 474

def load_balancers
  Morpheus::LoadBalancersInterface.new(common_interface_options).setopts(@options)
end

#log_settingsObject



788
789
790
# File 'lib/morpheus/api/api_client.rb', line 788

def log_settings
  Morpheus::LogSettingsInterface.new(common_interface_options).setopts(@options)
end

#logged_in?Boolean

Returns:

  • (Boolean)


274
275
276
# File 'lib/morpheus/api/api_client.rb', line 274

def logged_in?
  !!@access_token
end

#login(username, password, use_client_id = nil) ⇒ Object



286
287
288
289
290
291
292
293
294
295
296
297
298
299
# File 'lib/morpheus/api/api_client.rb', line 286

def (username, password, use_client_id=nil)
  if use_client_id
    self.client_id = use_client_id
  end
  @access_token, @refresh_token, @expires_at = nil, nil, nil
  response = auth.(username, password, self.client_id)
  @access_token = response['access_token']
  @refresh_token = response['refresh_token']
  if response['expires_in'] != nil
    @expires_at = Time.now + response['expires_in']
  end
  # return response
  return self
end

#logoutObject



319
320
321
322
323
324
# File 'lib/morpheus/api/api_client.rb', line 319

def logout
  @access_token = nil
  @refresh_token = nil
  @expires_at = nil
  return self
end

#logsObject



562
563
564
# File 'lib/morpheus/api/api_client.rb', line 562

def logs
  Morpheus::LogsInterface.new(common_interface_options).setopts(@options)
end

#monitoringObject



602
603
604
# File 'lib/morpheus/api/api_client.rb', line 602

def monitoring
  Morpheus::MonitoringInterface.new(common_interface_options).setopts(@options)
end

#network_dhcp_relaysObject



884
885
886
# File 'lib/morpheus/api/api_client.rb', line 884

def network_dhcp_relays
  Morpheus::NetworkDhcpRelaysInterface.new(common_interface_options).setopts(@options)
end

#network_dhcp_serversObject



880
881
882
# File 'lib/morpheus/api/api_client.rb', line 880

def network_dhcp_servers
  Morpheus::NetworkDhcpServersInterface.new(common_interface_options).setopts(@options)
end

#network_domain_recordsObject



676
677
678
# File 'lib/morpheus/api/api_client.rb', line 676

def network_domain_records
  Morpheus::NetworkDomainRecordsInterface.new(common_interface_options).setopts(@options)
end

#network_domainsObject



672
673
674
# File 'lib/morpheus/api/api_client.rb', line 672

def network_domains
  Morpheus::NetworkDomainsInterface.new(common_interface_options).setopts(@options)
end

#network_edge_clustersObject



876
877
878
# File 'lib/morpheus/api/api_client.rb', line 876

def network_edge_clusters
  Morpheus::NetworkEdgeClustersInterface.new(common_interface_options).setopts(@options)
end

#network_groupsObject



644
645
646
# File 'lib/morpheus/api/api_client.rb', line 644

def network_groups
  Morpheus::NetworkGroupsInterface.new(common_interface_options).setopts(@options)
end

#network_pool_ipsObject



652
653
654
# File 'lib/morpheus/api/api_client.rb', line 652

def network_pool_ips
  Morpheus::NetworkPoolIpsInterface.new(common_interface_options).setopts(@options)
end

#network_pool_serversObject



668
669
670
# File 'lib/morpheus/api/api_client.rb', line 668

def network_pool_servers
  Morpheus::NetworkPoolServersInterface.new(common_interface_options).setopts(@options)
end

#network_poolsObject



648
649
650
# File 'lib/morpheus/api/api_client.rb', line 648

def network_pools
  Morpheus::NetworkPoolsInterface.new(common_interface_options).setopts(@options)
end

#network_proxiesObject



680
681
682
# File 'lib/morpheus/api/api_client.rb', line 680

def network_proxies
  Morpheus::NetworkProxiesInterface.new(common_interface_options).setopts(@options)
end

#network_routersObject



656
657
658
# File 'lib/morpheus/api/api_client.rb', line 656

def network_routers
  Morpheus::NetworkRoutersInterface.new(common_interface_options).setopts(@options)
end

#network_security_serversObject



664
665
666
# File 'lib/morpheus/api/api_client.rb', line 664

def network_security_servers
  Morpheus::NetworkSecurityServersInterface.new(common_interface_options).setopts(@options)
end

#network_serversObject



872
873
874
# File 'lib/morpheus/api/api_client.rb', line 872

def network_servers
  Morpheus::NetworkServersInterface.new(common_interface_options).setopts(@options)
end

#network_servicesObject



660
661
662
# File 'lib/morpheus/api/api_client.rb', line 660

def network_services
  Morpheus::NetworkServicesInterface.new(common_interface_options).setopts(@options)
end

#network_static_routesObject



888
889
890
# File 'lib/morpheus/api/api_client.rb', line 888

def network_static_routes
  Morpheus::NetworkStaticRoutesInterface.new(common_interface_options).setopts(@options)
end

#network_typesObject



632
633
634
# File 'lib/morpheus/api/api_client.rb', line 632

def network_types
  Morpheus::NetworkTypesInterface.new(common_interface_options).setopts(@options)
end

#networksObject



628
629
630
# File 'lib/morpheus/api/api_client.rb', line 628

def networks
  Morpheus::NetworksInterface.new(common_interface_options).setopts(@options)
end

#old_cypherObject



760
761
762
# File 'lib/morpheus/api/api_client.rb', line 760

def old_cypher
  Morpheus::OldCypherInterface.new(common_interface_options).setopts(@options)
end

#option_type_listsObject



590
591
592
# File 'lib/morpheus/api/api_client.rb', line 590

def option_type_lists
  Morpheus::OptionTypeListsInterface.new(common_interface_options).setopts(@options)
end

#option_typesObject



586
587
588
# File 'lib/morpheus/api/api_client.rb', line 586

def option_types
  Morpheus::OptionTypesInterface.new(common_interface_options).setopts(@options)
end

#optionsObject



378
379
380
# File 'lib/morpheus/api/api_client.rb', line 378

def options
  Morpheus::OptionsInterface.new(common_interface_options).setopts(@options)
end

#packagesObject



752
753
754
# File 'lib/morpheus/api/api_client.rb', line 752

def packages
  Morpheus::PackagesInterface.new(common_interface_options).setopts(@options)
end

#pingObject



341
342
343
# File 'lib/morpheus/api/api_client.rb', line 341

def ping
  Morpheus::PingInterface.new(common_interface_options).setopts(@options)
end

#policiesObject

def incidents

# Morpheus::MonitoringIncidentsInterface.new(common_interface_options).setopts(@options)
monitoring.incidents

end



616
617
618
# File 'lib/morpheus/api/api_client.rb', line 616

def policies
  Morpheus::PoliciesInterface.new(common_interface_options).setopts(@options)
end

#power_schedulesObject



594
595
596
# File 'lib/morpheus/api/api_client.rb', line 594

def power_schedules
  Morpheus::PowerSchedulesInterface.new(common_interface_options).setopts(@options)
end

#price_setsObject



466
467
468
# File 'lib/morpheus/api/api_client.rb', line 466

def price_sets
  Morpheus::PriceSetsInterface.new(common_interface_options).setopts(@options)
end

#pricesObject



470
471
472
# File 'lib/morpheus/api/api_client.rb', line 470

def prices
  Morpheus::PricesInterface.new(common_interface_options).setopts(@options)
end

#processesObject



772
773
774
# File 'lib/morpheus/api/api_client.rb', line 772

def processes
  Morpheus::ProcessesInterface.new(common_interface_options).setopts(@options)
end

#projectsObject



824
825
826
# File 'lib/morpheus/api/api_client.rb', line 824

def projects
  Morpheus::ProjectsInterface.new(common_interface_options).setopts(@options)
end

#provision_typesObject



458
459
460
# File 'lib/morpheus/api/api_client.rb', line 458

def provision_types
  Morpheus::ProvisionTypesInterface.new(common_interface_options).setopts(@options)
end

#provisioning_license_typesObject



430
431
432
# File 'lib/morpheus/api/api_client.rb', line 430

def provisioning_license_types
  Morpheus::ProvisioningLicenseTypesInterface.new(common_interface_options).setopts(@options)
end

#provisioning_licensesObject



426
427
428
# File 'lib/morpheus/api/api_client.rb', line 426

def provisioning_licenses
  Morpheus::ProvisioningLicensesInterface.new(common_interface_options).setopts(@options)
end

#provisioning_settingsObject



422
423
424
# File 'lib/morpheus/api/api_client.rb', line 422

def provisioning_settings
  Morpheus::ProvisioningSettingsInterface.new(common_interface_options).setopts(@options)
end

#reportsObject



776
777
778
# File 'lib/morpheus/api/api_client.rb', line 776

def reports
  Morpheus::ReportsInterface.new(common_interface_options).setopts(@options)
end

#rest(endpoint) ⇒ Object



892
893
894
# File 'lib/morpheus/api/api_client.rb', line 892

def rest(endpoint)
  Morpheus::RestInterface.new(common_interface_options).setopts(@options.merge({base_path: "#{@base_url}/api/#{endpoint}"}))
end

#rolesObject



566
567
568
# File 'lib/morpheus/api/api_client.rb', line 566

def roles
  Morpheus::RolesInterface.new(common_interface_options).setopts(@options)
end

#searchObject



362
363
364
# File 'lib/morpheus/api/api_client.rb', line 362

def search
  Morpheus::SearchInterface.new(common_interface_options).setopts(@options)
end

#security_group_rulesObject



530
531
532
# File 'lib/morpheus/api/api_client.rb', line 530

def security_group_rules
  Morpheus::SecurityGroupRulesInterface.new(common_interface_options).setopts(@options)
end

#security_groupsObject



526
527
528
# File 'lib/morpheus/api/api_client.rb', line 526

def security_groups
  Morpheus::SecurityGroupsInterface.new(common_interface_options).setopts(@options)
end

#server_typesObject



454
455
456
# File 'lib/morpheus/api/api_client.rb', line 454

def server_types
  Morpheus::ServerTypesInterface.new(common_interface_options).setopts(@options)
end

#serversObject



410
411
412
# File 'lib/morpheus/api/api_client.rb', line 410

def servers
  Morpheus::ServersInterface.new(common_interface_options).setopts(@options)
end

#service_plansObject



462
463
464
# File 'lib/morpheus/api/api_client.rb', line 462

def service_plans
  Morpheus::ServicePlansInterface.new(common_interface_options).setopts(@options)
end

#set_ssl_verification_enabled(val) ⇒ Object



74
75
76
# File 'lib/morpheus/api/api_client.rb', line 74

def set_ssl_verification_enabled(val)
  @verify_ssl = !!val
end

#setopts(new_options) ⇒ Object Also known as: set_options

set common global @options for use with all requests meant for inline use just like dry(), set_options(dry_run:true) can be used in place of dry() Example: Prints curl -XGET …/whoami -H “Bearer” instead of actually request APIClient.new(token).whoami.setopts(curl:true).get({})

Parameters:

  • opts (Hash)

    globally supported options like :dry_run, :json, :curl, :headers, :timeout, etc



113
114
115
116
117
118
119
# File 'lib/morpheus/api/api_client.rb', line 113

def setopts(new_options)
  @options = new_options
  if @options[:dry_run]
    dry_run(true)
  end
  self
end

#setupObject



345
346
347
# File 'lib/morpheus/api/api_client.rb', line 345

def setup
  Morpheus::SetupInterface.new(common_interface_options).setopts(@options)
end

#ssl_verification_enabled?Boolean

Returns:

  • (Boolean)


70
71
72
# File 'lib/morpheus/api/api_client.rb', line 70

def ssl_verification_enabled?
  @verify_ssl
end

#storage_providersObject



696
697
698
# File 'lib/morpheus/api/api_client.rb', line 696

def storage_providers
  Morpheus::StorageProvidersInterface.new(common_interface_options).setopts(@options)
end

#storage_server_typesObject



704
705
706
# File 'lib/morpheus/api/api_client.rb', line 704

def storage_server_types
  Morpheus::StorageServerTypesInterface.new(common_interface_options).setopts(@options)
end

#storage_serversObject



700
701
702
# File 'lib/morpheus/api/api_client.rb', line 700

def storage_servers
  Morpheus::StorageServersInterface.new(common_interface_options).setopts(@options)
end

#storage_volume_typesObject



712
713
714
# File 'lib/morpheus/api/api_client.rb', line 712

def storage_volume_types
  Morpheus::StorageVolumeTypesInterface.new(common_interface_options).setopts(@options)
end

#storage_volumesObject



708
709
710
# File 'lib/morpheus/api/api_client.rb', line 708

def storage_volumes
  Morpheus::StorageVolumesInterface.new(common_interface_options).setopts(@options)
end

#subnet_typesObject



640
641
642
# File 'lib/morpheus/api/api_client.rb', line 640

def subnet_types
  Morpheus::SubnetTypesInterface.new(common_interface_options).setopts(@options)
end

#subnetsObject



636
637
638
# File 'lib/morpheus/api/api_client.rb', line 636

def subnets
  Morpheus::SubnetsInterface.new(common_interface_options).setopts(@options)
end

#task_setsObject



502
503
504
# File 'lib/morpheus/api/api_client.rb', line 502

def task_sets
  Morpheus::TaskSetsInterface.new(common_interface_options).setopts(@options)
end

#tasksObject



498
499
500
# File 'lib/morpheus/api/api_client.rb', line 498

def tasks
  Morpheus::TasksInterface.new(common_interface_options).setopts(@options)
end

#to_sObject



53
54
55
# File 'lib/morpheus/api/api_client.rb', line 53

def to_s
  "<##{self.class}:#{self.object_id.to_s(8)} @url=#{@base_url} @verify_ssl=#{@verify_ssl} @access_token=#{@access_token ? '************' : nil} @refresh_token=#{@access_token ? '************' : nil} @expires_at=#{@expires_at} @client_id=#{@client_id} @options=#{@options}>"
end

#urlObject



49
50
51
# File 'lib/morpheus/api/api_client.rb', line 49

def url
  @base_url
end

#usageObject



844
845
846
# File 'lib/morpheus/api/api_client.rb', line 844

def usage
  Morpheus::UsageInterface.new(common_interface_options).setopts(@options)
end

#use_refresh_token(t = nil) ⇒ Object



301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
# File 'lib/morpheus/api/api_client.rb', line 301

def use_refresh_token(t=nil)
  if t.nil?
    t = @refresh_token
  end
  if t.nil?
    raise "#{self.class} does not currently have a refresh_token"
  end
  response = auth.use_refresh_token(t, self.client_id)
  @access_token = response['access_token']
  @refresh_token = response['refresh_token']
  if response['expires_in'] != nil
    @expires_at = Time.now + response['expires_in']
  end
  @access_token = response['access_token']
  # return response
  return self
end

#user_groupsObject



554
555
556
# File 'lib/morpheus/api/api_client.rb', line 554

def user_groups
  Morpheus::UserGroupsInterface.new(common_interface_options).setopts(@options)
end

#user_settingsObject



366
367
368
# File 'lib/morpheus/api/api_client.rb', line 366

def 
  Morpheus::UserSettingsInterface.new(common_interface_options).setopts(@options)
end

#user_sourcesObject



558
559
560
# File 'lib/morpheus/api/api_client.rb', line 558

def user_sources
  Morpheus::UserSourcesInterface.new(common_interface_options).setopts(@options)
end

#usersObject



546
547
548
# File 'lib/morpheus/api/api_client.rb', line 546

def users
  Morpheus::UsersInterface.new(common_interface_options).setopts(@options)
end

#vdiObject



852
853
854
# File 'lib/morpheus/api/api_client.rb', line 852

def vdi
  Morpheus::VdiInterface.new(common_interface_options).setopts(@options)
end

#vdi_allocationsObject



860
861
862
# File 'lib/morpheus/api/api_client.rb', line 860

def vdi_allocations
  Morpheus::VdiAllocationsInterface.new(common_interface_options).setopts(@options)
end

#vdi_appsObject



864
865
866
# File 'lib/morpheus/api/api_client.rb', line 864

def vdi_apps
  Morpheus::VdiAppsInterface.new(common_interface_options).setopts(@options)
end

#vdi_gatewaysObject



868
869
870
# File 'lib/morpheus/api/api_client.rb', line 868

def vdi_gateways
  Morpheus::VdiGatewaysInterface.new(common_interface_options).setopts(@options)
end

#vdi_poolsObject



856
857
858
# File 'lib/morpheus/api/api_client.rb', line 856

def vdi_pools
  Morpheus::VdiPoolsInterface.new(common_interface_options).setopts(@options)
end

#virtual_imagesObject



506
507
508
# File 'lib/morpheus/api/api_client.rb', line 506

def virtual_images
  Morpheus::VirtualImagesInterface.new(common_interface_options).setopts(@options)
end

#whitelabel_settingsObject



792
793
794
# File 'lib/morpheus/api/api_client.rb', line 792

def whitelabel_settings
  Morpheus::WhitelabelSettingsInterface.new(common_interface_options).setopts(@options)
end

#whoamiObject



358
359
360
# File 'lib/morpheus/api/api_client.rb', line 358

def whoami
  Morpheus::WhoamiInterface.new(common_interface_options).setopts(@options)
end

#wikiObject



796
797
798
# File 'lib/morpheus/api/api_client.rb', line 796

def wiki
  Morpheus::WikiInterface.new(common_interface_options).setopts(@options)
end

#withopts(tmp_options, &block) ⇒ Object Also known as: with_options

with_options sets common global @options for the duration of the block only then returns the options to their prior values

Parameters:

  • opts (Hash)

    globally supported options like :dry_run, :json, :curl, :headers, :timeout, etc

Returns:

  • result of block, usually the a result Hash from client.execute({})



125
126
127
128
129
130
131
132
133
134
# File 'lib/morpheus/api/api_client.rb', line 125

def withopts(tmp_options, &block)
  @_old_options = @options
  begin
    @options = tmp_options
    result = block.call()
  ensure
    @options = @_old_options
  end
  return result
end