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

Sign up to get free protection for your applications and to get access to all the features.
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