rancher-api-beta 0.8.0.pre.beta → 0.8.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (192) hide show
  1. checksums.yaml +4 -4
  2. data/.gitignore +1 -0
  3. data/.gitlab-ci.yml +2 -2
  4. data/.rubocop.yml +2 -0
  5. data/.simplecov +1 -0
  6. data/Gemfile.lock +21 -4
  7. data/README.md +15 -0
  8. data/bin/console +3 -3
  9. data/bin/discover_api +13 -0
  10. data/lib/rancher/api.rb +1 -0
  11. data/lib/rancher/api/helpers.rb +6 -0
  12. data/lib/rancher/api/helpers/instance.rb +66 -0
  13. data/lib/rancher/api/helpers/machine.rb +42 -0
  14. data/lib/rancher/api/helpers/project.rb +20 -0
  15. data/lib/rancher/api/models.rb +158 -6
  16. data/lib/rancher/api/models/account.rb +57 -0
  17. data/lib/rancher/api/models/activesetting.rb +13 -0
  18. data/lib/rancher/api/models/addoutputsinput.rb +12 -0
  19. data/lib/rancher/api/models/addremoveservicelinkinput.rb +12 -0
  20. data/lib/rancher/api/models/agent.rb +23 -0
  21. data/lib/rancher/api/models/amazonec2config.rb +20 -0
  22. data/lib/rancher/api/models/apikey.rb +20 -0
  23. data/lib/rancher/api/models/auditlog.rb +21 -0
  24. data/lib/rancher/api/models/azureadconfig.rb +16 -0
  25. data/lib/rancher/api/models/azureconfig.rb +19 -0
  26. data/lib/rancher/api/models/backup.rb +24 -0
  27. data/lib/rancher/api/models/backuptarget.rb +18 -0
  28. data/lib/rancher/api/models/basemachineconfig.rb +12 -0
  29. data/lib/rancher/api/models/binding.rb +12 -0
  30. data/lib/rancher/api/models/blkiodeviceoption.rb +12 -0
  31. data/lib/rancher/api/models/catalogtemplate.rb +16 -0
  32. data/lib/rancher/api/models/certificate.rb +20 -0
  33. data/lib/rancher/api/models/changesecretinput.rb +12 -0
  34. data/lib/rancher/api/models/clustermembership.rb +13 -0
  35. data/lib/rancher/api/models/composeconfig.rb +12 -0
  36. data/lib/rancher/api/models/composeconfiginput.rb +12 -0
  37. data/lib/rancher/api/models/composeproject.rb +28 -0
  38. data/lib/rancher/api/models/composeservice.rb +30 -0
  39. data/lib/rancher/api/models/configitem.rb +12 -0
  40. data/lib/rancher/api/models/configitemstatus.rb +18 -0
  41. data/lib/rancher/api/models/container.rb +65 -0
  42. data/lib/rancher/api/models/containerevent.rb +20 -0
  43. data/lib/rancher/api/models/containerexec.rb +12 -0
  44. data/lib/rancher/api/models/containerlogs.rb +12 -0
  45. data/lib/rancher/api/models/containerproxy.rb +12 -0
  46. data/lib/rancher/api/models/credential.rb +20 -0
  47. data/lib/rancher/api/models/databasechangelog.rb +14 -0
  48. data/lib/rancher/api/models/databasechangeloglock.rb +12 -0
  49. data/lib/rancher/api/models/defaultnetwork.rb +21 -0
  50. data/lib/rancher/api/models/digitaloceanconfig.rb +14 -0
  51. data/lib/rancher/api/models/dnsservice.rb +30 -0
  52. data/lib/rancher/api/models/dockerbuild.rb +13 -0
  53. data/lib/rancher/api/models/extensionimplementation.rb +12 -0
  54. data/lib/rancher/api/models/extensionpoint.rb +12 -0
  55. data/lib/rancher/api/models/externaldnsevent.rb +20 -0
  56. data/lib/rancher/api/models/externalevent.rb +19 -0
  57. data/lib/rancher/api/models/externalhandler.rb +18 -0
  58. data/lib/rancher/api/models/externalhandlerexternalhandlerprocessmap.rb +20 -0
  59. data/lib/rancher/api/models/externalhandlerprocess.rb +17 -0
  60. data/lib/rancher/api/models/externalhandlerprocessconfig.rb +12 -0
  61. data/lib/rancher/api/models/externalhostevent.rb +21 -0
  62. data/lib/rancher/api/models/externalservice.rb +30 -0
  63. data/lib/rancher/api/models/externalserviceevent.rb +19 -0
  64. data/lib/rancher/api/models/externalstoragepoolevent.rb +19 -0
  65. data/lib/rancher/api/models/externalvolumeevent.rb +19 -0
  66. data/lib/rancher/api/models/fielddocumentation.rb +12 -0
  67. data/lib/rancher/api/models/genericobject.rb +18 -0
  68. data/lib/rancher/api/models/haconfig.rb +12 -0
  69. data/lib/rancher/api/models/haconfiginput.rb +15 -0
  70. data/lib/rancher/api/models/healthcheckinstancehostmap.rb +22 -0
  71. data/lib/rancher/api/models/host.rb +29 -1
  72. data/lib/rancher/api/models/hostaccess.rb +12 -0
  73. data/lib/rancher/api/models/hostapiproxytoken.rb +12 -0
  74. data/lib/rancher/api/models/hosttemplate.rb +19 -0
  75. data/lib/rancher/api/models/identity.rb +15 -0
  76. data/lib/rancher/api/models/image.rb +20 -0
  77. data/lib/rancher/api/models/inserviceupgradestrategy.rb +13 -0
  78. data/lib/rancher/api/models/instance.rb +23 -65
  79. data/lib/rancher/api/models/instanceconsole.rb +12 -0
  80. data/lib/rancher/api/models/instanceconsoleinput.rb +12 -0
  81. data/lib/rancher/api/models/instancehealthcheck.rb +14 -0
  82. data/lib/rancher/api/models/instancelink.rb +22 -0
  83. data/lib/rancher/api/models/instancestop.rb +12 -0
  84. data/lib/rancher/api/models/ipaddress.rb +12 -1
  85. data/lib/rancher/api/models/kubernetesservice.rb +29 -0
  86. data/lib/rancher/api/models/kubernetesstack.rb +29 -0
  87. data/lib/rancher/api/models/kubernetesstackupgrade.rb +12 -0
  88. data/lib/rancher/api/models/label.rb +20 -0
  89. data/lib/rancher/api/models/launchconfig.rb +66 -0
  90. data/lib/rancher/api/models/lbconfig.rb +14 -0
  91. data/lib/rancher/api/models/lbtargetconfig.rb +12 -0
  92. data/lib/rancher/api/models/ldapconfig.rb +16 -0
  93. data/lib/rancher/api/models/loadbalancercookiestickinesspolicy.rb +13 -0
  94. data/lib/rancher/api/models/loadbalancerservice.rb +31 -0
  95. data/lib/rancher/api/models/localauthconfig.rb +12 -0
  96. data/lib/rancher/api/models/logconfig.rb +12 -0
  97. data/lib/rancher/api/models/machine.rb +11 -34
  98. data/lib/rancher/api/models/machinedriver.rb +15 -0
  99. data/lib/rancher/api/models/mount.rb +22 -0
  100. data/lib/rancher/api/models/mountentry.rb +15 -0
  101. data/lib/rancher/api/models/network.rb +23 -0
  102. data/lib/rancher/api/models/networkdriver.rb +21 -0
  103. data/lib/rancher/api/models/networkdriverservice.rb +32 -0
  104. data/lib/rancher/api/models/networkpolicyrule.rb +13 -0
  105. data/lib/rancher/api/models/networkpolicyrulebetween.rb +12 -0
  106. data/lib/rancher/api/models/networkpolicyrulemember.rb +12 -0
  107. data/lib/rancher/api/models/networkpolicyrulewithin.rb +12 -0
  108. data/lib/rancher/api/models/nfsconfig.rb +12 -0
  109. data/lib/rancher/api/models/openldapconfig.rb +17 -0
  110. data/lib/rancher/api/models/{environment.rb → packetconfig.rb} +4 -3
  111. data/lib/rancher/api/models/password.rb +20 -0
  112. data/lib/rancher/api/models/physicalhost.rb +19 -0
  113. data/lib/rancher/api/models/port.rb +25 -0
  114. data/lib/rancher/api/models/portrule.rb +15 -0
  115. data/lib/rancher/api/models/processdefinition.rb +13 -0
  116. data/lib/rancher/api/models/processexecution.rb +15 -0
  117. data/lib/rancher/api/models/processinstance.rb +22 -0
  118. data/lib/rancher/api/models/processpool.rb +13 -0
  119. data/lib/rancher/api/models/processsummary.rb +12 -0
  120. data/lib/rancher/api/models/project.rb +48 -9
  121. data/lib/rancher/api/models/projectmember.rb +18 -0
  122. data/lib/rancher/api/models/projecttemplate.rb +19 -0
  123. data/lib/rancher/api/models/publicendpoint.rb +16 -0
  124. data/lib/rancher/api/models/publish.rb +16 -0
  125. data/lib/rancher/api/models/pulltask.rb +18 -0
  126. data/lib/rancher/api/models/recreateonquorumstrategyconfig.rb +12 -0
  127. data/lib/rancher/api/models/register.rb +18 -0
  128. data/lib/rancher/api/models/registrationtoken.rb +20 -0
  129. data/lib/rancher/api/models/registry.rb +11 -1
  130. data/lib/rancher/api/models/registrycredential.rb +11 -1
  131. data/lib/rancher/api/models/resourcedefinition.rb +12 -0
  132. data/lib/rancher/api/models/restartpolicy.rb +12 -0
  133. data/lib/rancher/api/models/restorefrombackupinput.rb +14 -0
  134. data/lib/rancher/api/models/reverttosnapshotinput.rb +14 -0
  135. data/lib/rancher/api/models/rollingrestartstrategy.rb +12 -0
  136. data/lib/rancher/api/models/scalepolicy.rb +12 -0
  137. data/lib/rancher/api/models/scheduledupgrade.rb +19 -0
  138. data/lib/rancher/api/models/schema.rb +13 -0
  139. data/lib/rancher/api/models/secondarylaunchconfig.rb +66 -0
  140. data/lib/rancher/api/models/secret.rb +17 -0
  141. data/lib/rancher/api/models/secretreference.rb +14 -0
  142. data/lib/rancher/api/models/service.rb +21 -2
  143. data/lib/rancher/api/models/servicebinding.rb +12 -0
  144. data/lib/rancher/api/models/serviceconsumemap.rb +23 -0
  145. data/lib/rancher/api/models/serviceevent.rb +22 -0
  146. data/lib/rancher/api/models/serviceexposemap.rb +22 -0
  147. data/lib/rancher/api/models/servicelink.rb +14 -0
  148. data/lib/rancher/api/models/servicelog.rb +22 -0
  149. data/lib/rancher/api/models/serviceproxy.rb +12 -0
  150. data/lib/rancher/api/models/servicerestart.rb +12 -0
  151. data/lib/rancher/api/models/servicesportrange.rb +12 -0
  152. data/lib/rancher/api/models/serviceupgrade.rb +12 -0
  153. data/lib/rancher/api/models/serviceupgradestrategy.rb +12 -0
  154. data/lib/rancher/api/models/setprojectmembersinput.rb +12 -0
  155. data/lib/rancher/api/models/setservicelinksinput.rb +12 -0
  156. data/lib/rancher/api/models/setting.rb +13 -0
  157. data/lib/rancher/api/models/snapshot.rb +20 -0
  158. data/lib/rancher/api/models/snapshotbackupinput.rb +15 -0
  159. data/lib/rancher/api/models/stack.rb +29 -0
  160. data/lib/rancher/api/models/stackupgrade.rb +13 -0
  161. data/lib/rancher/api/models/statetransition.rb +12 -0
  162. data/lib/rancher/api/models/statsaccess.rb +12 -0
  163. data/lib/rancher/api/models/storagedriver.rb +22 -0
  164. data/lib/rancher/api/models/storagedriverservice.rb +32 -0
  165. data/lib/rancher/api/models/storagepool.rb +25 -0
  166. data/lib/rancher/api/models/subnet.rb +21 -0
  167. data/lib/rancher/api/models/targetportrule.rb +12 -0
  168. data/lib/rancher/api/models/task.rb +14 -0
  169. data/lib/rancher/api/models/taskinstance.rb +17 -0
  170. data/lib/rancher/api/models/toserviceupgradestrategy.rb +14 -0
  171. data/lib/rancher/api/models/typedocumentation.rb +12 -0
  172. data/lib/rancher/api/models/ulimit.rb +12 -0
  173. data/lib/rancher/api/models/userpreference.rb +18 -0
  174. data/lib/rancher/api/models/virtualmachine.rb +60 -0
  175. data/lib/rancher/api/models/virtualmachinedisk.rb +13 -0
  176. data/lib/rancher/api/models/volume.rb +36 -0
  177. data/lib/rancher/api/models/volumeactivateinput.rb +14 -0
  178. data/lib/rancher/api/models/volumesnapshotinput.rb +12 -0
  179. data/lib/rancher/api/models/volumetemplate.rb +21 -0
  180. data/lib/rancher/api/version.rb +1 -1
  181. data/lib/rancher/api_discovery.rb +98 -0
  182. data/rancher-api-beta.gemspec +2 -0
  183. data/scripts/vcr_record.rb +31 -0
  184. data/templates/model.erb +22 -0
  185. data/vagrant-rancher/.gitignore +2 -0
  186. data/vagrant-rancher/README.md +24 -0
  187. data/vagrant-rancher/Vagrantfile +70 -0
  188. data/vagrant-rancher/ansible/docker.yml +65 -0
  189. data/vagrant-rancher/ansible/master.yml +3 -0
  190. data/vagrant-rancher/ansible/nfs-server.yml +30 -0
  191. data/vagrant-rancher/ansible/node.yml +2 -0
  192. metadata +203 -5
@@ -0,0 +1,12 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Rancher
4
+ module Api
5
+ class Targetportrule
6
+ include Her::Model
7
+ include Helpers::Model
8
+
9
+ attributes :backendName, :hostname, :path, :targetPort
10
+ end
11
+ end
12
+ end
@@ -0,0 +1,14 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Rancher
4
+ module Api
5
+ class Task
6
+ include Her::Model
7
+ include Helpers::Model
8
+
9
+ has_many :taskinstances
10
+
11
+ attributes :id, :name
12
+ end
13
+ end
14
+ end
@@ -0,0 +1,17 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Rancher
4
+ module Api
5
+ class Taskinstance
6
+ include Her::Model
7
+ include Helpers::Model
8
+
9
+ belongs_to :server
10
+ belongs_to :task
11
+ has_one :task
12
+
13
+ attributes :endTime, :exception, :id, :name, :serverId,
14
+ :startTime, :taskId
15
+ end
16
+ end
17
+ end
@@ -0,0 +1,14 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Rancher
4
+ module Api
5
+ class Toserviceupgradestrategy
6
+ include Her::Model
7
+ include Helpers::Model
8
+
9
+ belongs_to :toservice
10
+
11
+ attributes :batchSize, :finalScale, :intervalMillis, :toServiceId, :updateLinks
12
+ end
13
+ end
14
+ end
@@ -0,0 +1,12 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Rancher
4
+ module Api
5
+ class Typedocumentation
6
+ include Her::Model
7
+ include Helpers::Model
8
+
9
+ attributes :description, :id, :resourceFields
10
+ end
11
+ end
12
+ end
@@ -0,0 +1,12 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Rancher
4
+ module Api
5
+ class Ulimit
6
+ include Her::Model
7
+ include Helpers::Model
8
+
9
+ attributes :hard, :name, :soft
10
+ end
11
+ end
12
+ end
@@ -0,0 +1,18 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Rancher
4
+ module Api
5
+ class Userpreference
6
+ include Her::Model
7
+ include Helpers::Model
8
+
9
+ belongs_to :account
10
+ has_one :account
11
+
12
+ attributes :accountId, :created, :data, :description, :id,
13
+ :kind, :name, :removeTime, :removed, :state,
14
+ :uuid, :value, :transitioning, :transitioningMessage, :transitioningProgress,
15
+ :all
16
+ end
17
+ end
18
+ end
@@ -0,0 +1,60 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Rancher
4
+ module Api
5
+ class Virtualmachine
6
+ include Her::Model
7
+ include Helpers::Model
8
+
9
+ belongs_to :account
10
+ belongs_to :agent
11
+ belongs_to :host
12
+ belongs_to :primarynetwork
13
+ belongs_to :registrycredential
14
+ belongs_to :requestedhost
15
+ belongs_to :service
16
+ belongs_to :stack
17
+ has_one :agent
18
+ has_one :stack
19
+ has_one :registrycredential
20
+ has_one :service
21
+ has_one :account
22
+ has_many :credentials
23
+ has_many :instances
24
+ has_many :hosts
25
+ has_many :volumes
26
+ has_many :mounts
27
+ has_many :serviceevents
28
+ has_many :serviceexposemaps
29
+ has_many :services
30
+ has_many :ports
31
+ has_many :instancelinks
32
+ has_many :healthcheckinstancehostmaps
33
+ has_many :targetinstancelinks
34
+ has_many :instancelabels
35
+ has_many :servicelogs
36
+
37
+ attributes :accountId, :agentId, :allocationState, :blkioDeviceOptions, :blkioWeight,
38
+ :cgroupParent, :command, :count, :cpuCount, :cpuPercent,
39
+ :cpuPeriod, :cpuQuota, :cpuSet, :cpuSetMems, :cpuShares,
40
+ :createIndex, :created, :data, :deploymentUnitUuid, :description,
41
+ :diskQuota, :dns, :dnsOpt, :dnsSearch, :domainName,
42
+ :expose, :externalId, :extraHosts, :firstRunning, :groupAdd,
43
+ :healthCheck, :healthCmd, :healthInterval, :healthRetries, :healthState,
44
+ :healthTimeout, :hostId, :hostname, :id, :imageUuid,
45
+ :instanceLinks, :instanceTriggeredStop, :ioMaximumBandwidth, :ioMaximumIOps, :ip,
46
+ :ip6, :ipcMode, :isolation, :kernelMemory, :kind,
47
+ :labels, :logConfig, :memory, :memoryMb, :memoryReservation,
48
+ :memorySwap, :memorySwappiness, :milliCpuReservation, :mounts, :name,
49
+ :nativeContainer, :netAlias, :networkIds, :networkMode, :oomKillDisable,
50
+ :oomScoreAdj, :pidsLimit, :ports, :primaryIpAddress, :primaryNetworkId,
51
+ :registryCredentialId, :removeTime, :removed, :requestedHostId, :restartPolicy,
52
+ :securityOpt, :serviceId, :serviceIds, :shmSize, :stackId,
53
+ :startCount, :startOnCreate, :state, :stopSignal, :storageOpt,
54
+ :sysctls, :system, :tmpfs, :token, :transitioning,
55
+ :transitioningMessage, :transitioningProgress, :ulimits, :userPorts, :userdata,
56
+ :usernsMode, :uts, :uuid, :version, :volumeDriver,
57
+ :vcpu, :disks
58
+ end
59
+ end
60
+ end
@@ -0,0 +1,13 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Rancher
4
+ module Api
5
+ class Virtualmachinedisk
6
+ include Her::Model
7
+ include Helpers::Model
8
+
9
+ attributes :driver, :name, :opts, :readIops, :root,
10
+ :size, :writeIops
11
+ end
12
+ end
13
+ end
@@ -0,0 +1,36 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Rancher
4
+ module Api
5
+ class Volume
6
+ include Her::Model
7
+ include Helpers::Model
8
+
9
+ belongs_to :account
10
+ belongs_to :host
11
+ belongs_to :image
12
+ belongs_to :instance
13
+ belongs_to :stack
14
+ belongs_to :storagedriver
15
+ belongs_to :volumetemplate
16
+ has_one :image
17
+ has_one :stack
18
+ has_one :storagedriver
19
+ has_one :instance
20
+ has_one :volumetemplate
21
+ has_one :host
22
+ has_one :account
23
+ has_many :snapshots
24
+ has_many :storagepools
25
+ has_many :mounts
26
+ has_many :backups
27
+
28
+ attributes :accessMode, :accountId, :created, :data, :description,
29
+ :externalId, :hostId, :id, :imageId, :instanceId,
30
+ :kind, :name, :removeTime, :removed, :sizeMb,
31
+ :stackId, :state, :storageDriverId, :uri, :uuid,
32
+ :volumeTemplateId, :transitioning, :transitioningMessage, :transitioningProgress, :isHostPath,
33
+ :driver, :driverOpts, :mounts
34
+ end
35
+ end
36
+ end
@@ -0,0 +1,14 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Rancher
4
+ module Api
5
+ class Volumeactivateinput
6
+ include Her::Model
7
+ include Helpers::Model
8
+
9
+ belongs_to :host
10
+
11
+ attributes :hostId
12
+ end
13
+ end
14
+ end
@@ -0,0 +1,12 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Rancher
4
+ module Api
5
+ class Volumesnapshotinput
6
+ include Her::Model
7
+ include Helpers::Model
8
+
9
+ attributes :name
10
+ end
11
+ end
12
+ end
@@ -0,0 +1,21 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Rancher
4
+ module Api
5
+ class Volumetemplate
6
+ include Her::Model
7
+ include Helpers::Model
8
+
9
+ belongs_to :account
10
+ belongs_to :stack
11
+ has_one :stack
12
+ has_one :account
13
+ has_many :volumes
14
+
15
+ attributes :accountId, :created, :data, :description, :driver,
16
+ :external, :id, :kind, :name, :perContainer,
17
+ :removeTime, :removed, :stackId, :state, :uuid,
18
+ :transitioning, :transitioningMessage, :transitioningProgress, :driverOpts
19
+ end
20
+ end
21
+ end
@@ -2,6 +2,6 @@
2
2
 
3
3
  module Rancher
4
4
  module Api
5
- VERSION = '0.8.0-beta'
5
+ VERSION = '0.8.1'
6
6
  end
7
7
  end
@@ -0,0 +1,98 @@
1
+ # frozen_string_literal: true
2
+
3
+ require 'rest-client'
4
+ require 'active_support'
5
+ require 'json'
6
+ require 'erb'
7
+
8
+ module Rancher
9
+ module ApiDiscovery
10
+ class Crawler
11
+ def initialize
12
+ @base_url = ENV['RANCHER_URL']
13
+ @entities = {}
14
+ end
15
+
16
+ def run
17
+ schemas = get(@base_url + '/schemas')
18
+ schemas['data'].each do |entity|
19
+ @entities[entity['id']] = Entity.new(entity)
20
+ end
21
+ @entities.each do |key, entity|
22
+ puts "Discovered: #{key}"
23
+ puts "helpers: #{entity.helpers}"
24
+ puts "has_many: #{entity.has_many}"
25
+ puts "has_one: #{entity.has_one}"
26
+ puts "belongs_to: #{entity.belongs_to}"
27
+ puts "attributes: #{entity.attributes}"
28
+ puts "Generated code:\n"
29
+ puts entity.code
30
+ puts "\n"
31
+ end
32
+ end
33
+
34
+ def generate_code
35
+ @entities.each do |key, entity|
36
+ filename = "./lib/rancher/api/models/#{key.downcase}.rb"
37
+ File.write(filename, entity.code)
38
+ end
39
+ File.open('./lib/rancher/api/models.rb', 'w') do |file|
40
+ @entities.each do |key, _|
41
+ require_string = "require 'rancher/api/models/#{key.downcase}'"
42
+ file.puts(require_string)
43
+ end
44
+ end
45
+ end
46
+
47
+ private
48
+
49
+ def parse_response(json)
50
+ JSON.parse(json)
51
+ end
52
+
53
+ def get(url)
54
+ parse_response(RestClient.get(url))
55
+ end
56
+ end
57
+
58
+ class Entity < OpenStruct
59
+ def has_many
60
+ includeableLinks.map(&:downcase).reject { |k| singular?(k) }
61
+ end
62
+
63
+ def has_one
64
+ includeableLinks.map(&:downcase).select { |k| singular?(k) }
65
+ end
66
+
67
+ def belongs_to
68
+ attributes.select { |k| k.end_with?('Id') }.reject { |k| k.eql?('externalId') }.map do |relation_key|
69
+ relation_key.gsub('Id', '').downcase
70
+ end
71
+ end
72
+
73
+ def attributes
74
+ resourceFields.keys
75
+ end
76
+
77
+ def code
78
+ renderer = ERB.new(File.read('./templates/model.erb'), nil, '-')
79
+ renderer.result(binding)
80
+ end
81
+
82
+ def helpers
83
+ return [] unless File.exist?(helper_filename)
84
+ ["Rancher::Api::Helpers::#{id.capitalize}"]
85
+ end
86
+
87
+ def helper_filename
88
+ "./lib/rancher/api/helpers/#{id}.rb"
89
+ end
90
+
91
+ private
92
+
93
+ def singular?(str)
94
+ str.singularize == str
95
+ end
96
+ end
97
+ end
98
+ end
@@ -31,6 +31,8 @@ Gem::Specification.new do |spec|
31
31
  spec.add_dependency 'faye-websocket'
32
32
  spec.add_dependency 'faraday_middleware'
33
33
 
34
+ spec.add_development_dependency 'rest-client'
35
+ spec.add_development_dependency 'activesupport'
34
36
  spec.add_development_dependency 'bundler', '~> 1.14.5'
35
37
  spec.add_development_dependency 'rake', '~> 12.0'
36
38
  spec.add_development_dependency 'rspec', '~> 3.6.0'
@@ -0,0 +1,31 @@
1
+ #!/usr/bin/env ruby
2
+ # frozen_string_literal: true
3
+
4
+ require 'pry'
5
+ require 'open-uri'
6
+
7
+ def exec_cmd(cmd)
8
+ puts "[#{Time.now}] now running: #{cmd}"
9
+ puts `#{cmd}`
10
+ end
11
+
12
+ exec_cmd('rm -rf spec/cassettes/*')
13
+ exec_cmd('cd vagrant-rancher && vagrant up')
14
+
15
+ server_offline = true
16
+
17
+ while server_offline
18
+ begin
19
+ ok = open('http://192.168.123.11:8080/v2-beta').status.include?('OK')
20
+ server_offline = !ok
21
+ rescue
22
+ puts "[#{Time.now}] ... server still offline, sleeping"
23
+ ensure
24
+ sleep(3)
25
+ end
26
+ end
27
+
28
+ exec_cmd('SLEEP_TIME=5 bundle exec rspec')
29
+
30
+ exec_cmd('cd vagrant-rancher && vagrant halt')
31
+ exec_cmd('bundle exec rspec')
@@ -0,0 +1,22 @@
1
+ module Rancher
2
+ module Api
3
+ class <%= id.capitalize %>
4
+ include Her::Model
5
+ include Helpers::Model
6
+ <% helpers.each do |helper| %>
7
+ include <%= helper -%>
8
+ <% end -%>
9
+ <% belongs_to.each do |relation| %>
10
+ belongs_to :<%= relation -%>
11
+ <% end -%>
12
+ <% has_one.each do |relation| %>
13
+ has_one :<%= relation -%>
14
+ <% end -%>
15
+ <% has_many.each do |relation| %>
16
+ has_many :<%= relation -%>
17
+ <% end %>
18
+
19
+ attributes <%= attributes.each_slice(5).map {|slice| slice.map { |k| ":#{k}" }.join(', ')}.join(",\n") %>
20
+ end
21
+ end
22
+ end