rhea 0.0.1 → 0.1.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (69) hide show
  1. checksums.yaml +4 -4
  2. data/README.md +165 -2
  3. data/app/assets/javascripts/rhea/application.js +2 -0
  4. data/app/assets/javascripts/rhea/main.js +3 -0
  5. data/app/assets/javascripts/vendor/jquery-1.11.3.js +10351 -0
  6. data/app/assets/stylesheets/rhea/application.css.sass +1 -0
  7. data/app/assets/stylesheets/rhea/layout.css.sass +31 -0
  8. data/app/controllers/rhea/base_controller.rb +26 -0
  9. data/app/controllers/rhea/commands_controller.rb +168 -0
  10. data/app/controllers/rhea/events_controller.rb +8 -0
  11. data/app/controllers/rhea/nodes_controller.rb +7 -0
  12. data/app/controllers/rhea/system_services_controller.rb +7 -0
  13. data/app/helpers/rhea/helper.rb +42 -0
  14. data/app/views/rhea/command_types/_list.html.haml +5 -0
  15. data/app/views/rhea/commands/_form.html.haml +22 -0
  16. data/app/views/rhea/commands/_table.html.haml +51 -0
  17. data/app/views/rhea/commands/index.html.haml +51 -0
  18. data/app/views/rhea/errors/index.html.haml +2 -0
  19. data/app/views/rhea/events/index.html.haml +24 -0
  20. data/app/views/rhea/layouts/application.html.haml +35 -0
  21. data/app/views/rhea/nodes/index.html.haml +29 -0
  22. data/app/views/rhea/system_services/index.html.haml +2 -0
  23. data/config/routes.rb +21 -0
  24. data/docs/commands.gif +0 -0
  25. data/docs/commands.mov +0 -0
  26. data/docs/events.png +0 -0
  27. data/docs/logo.png +0 -0
  28. data/docs/nodes.png +0 -0
  29. data/fixtures/vcr_cassettes/Rhea_Kubernetes_Commands_All/_perform/an_existing_rc/returns_the_rc.yml +197 -0
  30. data/fixtures/vcr_cassettes/Rhea_Kubernetes_Commands_Delete/_perform/an_existing_rc/deletes_the_rc.yml +163 -0
  31. data/fixtures/vcr_cassettes/Rhea_Kubernetes_Commands_Export/_perform/an_existing_rc/returns_the_data.yml +197 -0
  32. data/fixtures/vcr_cassettes/Rhea_Kubernetes_Commands_Get/_perform/an_existing_rc/gets_the_rc.yml +196 -0
  33. data/fixtures/vcr_cassettes/Rhea_Kubernetes_Commands_Import/_perform/no_existing_rcs/creates_the_rcs.yml +197 -0
  34. data/fixtures/vcr_cassettes/Rhea_Kubernetes_Commands_Redeploy/_perform/an_existing_rc/redeploys_the_rc.yml +424 -0
  35. data/fixtures/vcr_cassettes/Rhea_Kubernetes_Commands_Reschedule/_perform/an_existing_rc/reschedules_the_rc.yml +421 -0
  36. data/fixtures/vcr_cassettes/Rhea_Kubernetes_Commands_Scale/_perform/no_existing_rc/creates_an_rc.yml +165 -0
  37. data/lib/rhea.rb +15 -1
  38. data/lib/rhea/command.rb +35 -0
  39. data/lib/rhea/command_type.rb +35 -0
  40. data/lib/rhea/engine.rb +16 -0
  41. data/lib/rhea/kubernetes.rb +5 -0
  42. data/lib/rhea/kubernetes/api.rb +15 -0
  43. data/lib/rhea/kubernetes/commands/all.rb +16 -0
  44. data/lib/rhea/kubernetes/commands/base.rb +28 -0
  45. data/lib/rhea/kubernetes/commands/delete.rb +18 -0
  46. data/lib/rhea/kubernetes/commands/export.rb +23 -0
  47. data/lib/rhea/kubernetes/commands/get.rb +18 -0
  48. data/lib/rhea/kubernetes/commands/import.rb +20 -0
  49. data/lib/rhea/kubernetes/commands/redeploy.rb +22 -0
  50. data/lib/rhea/kubernetes/commands/reschedule.rb +21 -0
  51. data/lib/rhea/kubernetes/commands/scale.rb +108 -0
  52. data/lib/rhea/kubernetes/configuration.rb +30 -0
  53. data/lib/rhea/kubernetes/events/recent.rb +23 -0
  54. data/lib/rhea/kubernetes/nodes/all.rb +45 -0
  55. data/lib/rhea/kubernetes/system_services.rb +22 -0
  56. data/lib/rhea/version.rb +1 -1
  57. data/rhea.gemspec +11 -3
  58. data/spec/lib/rhea/kubernetes/commands/all_spec.rb +29 -0
  59. data/spec/lib/rhea/kubernetes/commands/delete_spec.rb +22 -0
  60. data/spec/lib/rhea/kubernetes/commands/export_spec.rb +31 -0
  61. data/spec/lib/rhea/kubernetes/commands/get_spec.rb +28 -0
  62. data/spec/lib/rhea/kubernetes/commands/import_spec.rb +39 -0
  63. data/spec/lib/rhea/kubernetes/commands/redeploy_spec.rb +35 -0
  64. data/spec/lib/rhea/kubernetes/commands/reschedule_spec.rb +32 -0
  65. data/spec/lib/rhea/kubernetes/commands/scale_spec.rb +31 -0
  66. data/spec/spec_helper.rb +2 -0
  67. data/spec/support/kubernetes_spec_helper.rb +43 -0
  68. data/spec/support/vcr.rb +9 -0
  69. metadata +170 -11
@@ -0,0 +1,35 @@
1
+ !!! 5
2
+ %html(lang="en")
3
+ %head
4
+ %meta(charset="utf-8")
5
+ %meta(http-equiv="X-UA-Compatible" content="IE=Edge,chrome=1")
6
+ %meta(name="viewport" content="width=device-width, initial-scale=1.0")
7
+ %title= content_for?(:title) ? yield(:title) : app_name
8
+ = csrf_meta_tags
9
+ = stylesheet_link_tag 'https://maxcdn.bootstrapcdn.com/bootstrap/3.3.6/css/bootstrap.min.css', integrity: 'sha384-1q8mTJOASx8j1Au+a5WDVnPi2lkFfwwEAa8hDDdjZlpLegxhjVME1fgjWPGmkzs7', crossorigin: 'anonymous'
10
+ = stylesheet_link_tag 'rhea/application'
11
+ = javascript_include_tag 'rhea/application'
12
+ = javascript_include_tag 'https://maxcdn.bootstrapcdn.com/bootstrap/3.3.6/js/bootstrap.min.js'
13
+
14
+ %body
15
+ .navbar.navbar-default.navbar-static-top
16
+ .container-fluid
17
+ %button.navbar-toggle(type="button" data-toggle="collapse" data-target=".navbar-responsive-collapse")
18
+ = link_to app_name, rhea_path, class: 'navbar-brand'
19
+ .navbar-collapse.collapse.navbar-responsive-collapse
20
+ %ul.nav.navbar-nav
21
+ %li{ class: params[:controller] == 'rhea/commands' ? 'active' : '' }
22
+ = link_to 'Commands', commands_path
23
+ %li{ class: params[:controller] == 'rhea/nodes' ? 'active' : '' }
24
+ = link_to 'Nodes', nodes_path
25
+ %li{ class: params[:controller] == 'rhea/events' ? 'active' : '' }
26
+ = link_to 'Events', events_path
27
+ %li{ class: params[:controller] == 'rhea/system_services' ? 'active' : '' }
28
+ = link_to 'System Services', system_services_path
29
+ %li
30
+ = link_to 'Kubernetes UI', Rhea::Kubernetes::SystemServices.service_names_urls['Kubernetes UI'], target: '_blank'
31
+ .container-fluid
32
+ .row
33
+ .col-lg-12
34
+ = bootstrap_flash
35
+ = yield
@@ -0,0 +1,29 @@
1
+ %table.table.table-striped
2
+ %thead
3
+ %tr
4
+ %th Host
5
+ %th Last pod started
6
+ %th Commands
7
+ %th
8
+ %tbody
9
+ - @nodes.each do |node|
10
+ %tr
11
+ %td= node.hostname
12
+ %td
13
+ - if started_at = node.last_started_at
14
+ = time_ago_in_words(started_at)
15
+ ago
16
+ %td
17
+ %table.table.table-condensed.table-striped.table-bordered
18
+ %tbody
19
+ - node.commands_phases.each do |command, phases|
20
+ %tr
21
+ %td= humanize_image(command.image)
22
+ %td= command.expression
23
+ %td= phases.length
24
+ %td
25
+ - uniq_phases = phases.uniq
26
+ - if uniq_phases.length == 1
27
+ = uniq_phases.first
28
+ - else
29
+ = phases.sort.join(', ')
@@ -0,0 +1,2 @@
1
+ - @service_names_urls.each do |service_name, url|
2
+ %h4= link_to service_name, url, target: '_blank'
@@ -0,0 +1,21 @@
1
+ Rhea::Engine.routes.draw do
2
+ get '/', to: 'commands#index', as: 'rhea'
3
+ resources :commands, only: [:index, :create] do
4
+ collection do
5
+ get :delete
6
+ get :export
7
+ get :redeploy
8
+ get :reschedule
9
+ get :stop
10
+ post :batch_update
11
+ put :import
12
+ end
13
+ end
14
+ resources :events, only: [:index]
15
+ resources :nodes, only: [:index]
16
+ resources :system_services, only: [:index]
17
+
18
+ namespace 'api' do
19
+ get '/jobs', to: 'jobs#index'
20
+ end
21
+ end
Binary file
Binary file
Binary file
Binary file
Binary file
@@ -0,0 +1,197 @@
1
+ ---
2
+ http_interactions:
3
+ - request:
4
+ method: get
5
+ uri: https://vagrant:vagrant@kube.local/api/v1/replicationcontrollers
6
+ body:
7
+ encoding: US-ASCII
8
+ string: ''
9
+ headers:
10
+ Accept:
11
+ - "*/*; q=0.5, application/xml"
12
+ Accept-Encoding:
13
+ - gzip, deflate
14
+ User-Agent:
15
+ - Ruby
16
+ response:
17
+ status:
18
+ code: 200
19
+ message: OK
20
+ headers:
21
+ Content-Type:
22
+ - application/json
23
+ Date:
24
+ - Thu, 12 Nov 2015 19:29:23 GMT
25
+ Transfer-Encoding:
26
+ - chunked
27
+ body:
28
+ encoding: UTF-8
29
+ string: '{"kind":"ReplicationControllerList","apiVersion":"v1","metadata":{"selfLink":"/api/v1/replicationcontrollers","resourceVersion":"2782"},"items":[{"metadata":{"name":"kube-dns-v8","namespace":"kube-system","selfLink":"/api/v1/namespaces/kube-system/replicationcontrollers/kube-dns-v8","uid":"e97525d7-8967-11e5-8c9b-0800279dd272","resourceVersion":"63","generation":1,"creationTimestamp":"2015-11-12T18:05:09Z","labels":{"k8s-app":"kube-dns","kubernetes.io/cluster-service":"true","version":"v8"}},"spec":{"replicas":1,"selector":{"k8s-app":"kube-dns","version":"v8"},"template":{"metadata":{"creationTimestamp":null,"labels":{"k8s-app":"kube-dns","kubernetes.io/cluster-service":"true","version":"v8"}},"spec":{"volumes":[{"name":"etcd-storage","emptyDir":{}}],"containers":[{"name":"etcd","image":"gcr.io/google_containers/etcd:2.0.9","command":["/usr/local/bin/etcd","-data-dir","/var/etcd/data","-listen-client-urls","http://127.0.0.1:2379,http://127.0.0.1:4001","-advertise-client-urls","http://127.0.0.1:2379,http://127.0.0.1:4001","-initial-cluster-token","skydns-etcd"],"resources":{"limits":{"cpu":"100m","memory":"50Mi"},"requests":{"cpu":"100m","memory":"50Mi"}},"volumeMounts":[{"name":"etcd-storage","mountPath":"/var/etcd/data"}],"terminationMessagePath":"/dev/termination-log","imagePullPolicy":"IfNotPresent"},{"name":"kube2sky","image":"gcr.io/google_containers/kube2sky:1.11","args":["-domain=cluster.local"],"resources":{"limits":{"cpu":"100m","memory":"50Mi"},"requests":{"cpu":"100m","memory":"50Mi"}},"terminationMessagePath":"/dev/termination-log","imagePullPolicy":"IfNotPresent"},{"name":"skydns","image":"gcr.io/google_containers/skydns:2015-03-11-001","args":["-machines=http://localhost:4001","-addr=0.0.0.0:53","-domain=cluster.local."],"ports":[{"name":"dns","containerPort":53,"protocol":"UDP"},{"name":"dns-tcp","containerPort":53,"protocol":"TCP"}],"resources":{"limits":{"cpu":"100m","memory":"50Mi"},"requests":{"cpu":"100m","memory":"50Mi"}},"livenessProbe":{"httpGet":{"path":"/healthz","port":8080,"scheme":"HTTP"},"initialDelaySeconds":30,"timeoutSeconds":5},"terminationMessagePath":"/dev/termination-log","imagePullPolicy":"IfNotPresent"},{"name":"healthz","image":"gcr.io/google_containers/exechealthz:1.0","args":["-cmd=nslookup
30
+ kubernetes.default.svc.cluster.local localhost \u003e/dev/null","-port=8080"],"ports":[{"containerPort":8080,"protocol":"TCP"}],"resources":{"limits":{"cpu":"10m","memory":"20Mi"},"requests":{"cpu":"10m","memory":"20Mi"}},"terminationMessagePath":"/dev/termination-log","imagePullPolicy":"IfNotPresent"}],"restartPolicy":"Always","terminationGracePeriodSeconds":30,"dnsPolicy":"Default"}}},"status":{"replicas":1,"observedGeneration":1}},{"metadata":{"name":"kube-ui-v1","namespace":"kube-system","selfLink":"/api/v1/namespaces/kube-system/replicationcontrollers/kube-ui-v1","uid":"e962afd4-8967-11e5-8c9b-0800279dd272","resourceVersion":"58","generation":1,"creationTimestamp":"2015-11-12T18:05:09Z","labels":{"k8s-app":"kube-ui","kubernetes.io/cluster-service":"true","version":"v1"}},"spec":{"replicas":1,"selector":{"k8s-app":"kube-ui","version":"v1"},"template":{"metadata":{"creationTimestamp":null,"labels":{"k8s-app":"kube-ui","kubernetes.io/cluster-service":"true","version":"v1"}},"spec":{"containers":[{"name":"kube-ui","image":"gcr.io/google_containers/kube-ui:v1.1","ports":[{"containerPort":8080,"protocol":"TCP"}],"resources":{"limits":{"cpu":"100m","memory":"50Mi"},"requests":{"cpu":"100m","memory":"50Mi"}},"livenessProbe":{"httpGet":{"path":"/","port":8080,"scheme":"HTTP"},"initialDelaySeconds":30,"timeoutSeconds":5},"terminationMessagePath":"/dev/termination-log","imagePullPolicy":"IfNotPresent"}],"restartPolicy":"Always","terminationGracePeriodSeconds":30,"dnsPolicy":"ClusterFirst"}}},"status":{"replicas":1,"observedGeneration":1}},{"metadata":{"name":"monitoring-heapster-v8","namespace":"kube-system","selfLink":"/api/v1/namespaces/kube-system/replicationcontrollers/monitoring-heapster-v8","uid":"e9614810-8967-11e5-8c9b-0800279dd272","resourceVersion":"49","generation":1,"creationTimestamp":"2015-11-12T18:05:09Z","labels":{"k8s-app":"heapster","kubernetes.io/cluster-service":"true","version":"v8"}},"spec":{"replicas":1,"selector":{"k8s-app":"heapster","version":"v8"},"template":{"metadata":{"creationTimestamp":null,"labels":{"k8s-app":"heapster","kubernetes.io/cluster-service":"true","version":"v8"}},"spec":{"containers":[{"name":"heapster","image":"gcr.io/google_containers/heapster:v0.17.0","command":["/heapster","--source=kubernetes:''''","--sink=influxdb:http://monitoring-influxdb:8086"],"resources":{"limits":{"cpu":"100m","memory":"300Mi"},"requests":{"cpu":"100m","memory":"300Mi"}},"terminationMessagePath":"/dev/termination-log","imagePullPolicy":"IfNotPresent"}],"restartPolicy":"Always","terminationGracePeriodSeconds":30,"dnsPolicy":"ClusterFirst"}}},"status":{"replicas":1,"observedGeneration":1}},{"metadata":{"name":"monitoring-influx-grafana-v1","namespace":"kube-system","selfLink":"/api/v1/namespaces/kube-system/replicationcontrollers/monitoring-influx-grafana-v1","uid":"e9749ef6-8967-11e5-8c9b-0800279dd272","resourceVersion":"62","generation":1,"creationTimestamp":"2015-11-12T18:05:09Z","labels":{"k8s-app":"influxGrafana","kubernetes.io/cluster-service":"true","version":"v1"}},"spec":{"replicas":1,"selector":{"k8s-app":"influxGrafana","version":"v1"},"template":{"metadata":{"creationTimestamp":null,"labels":{"k8s-app":"influxGrafana","kubernetes.io/cluster-service":"true","version":"v1"}},"spec":{"volumes":[{"name":"influxdb-persistent-storage","emptyDir":{}}],"containers":[{"name":"influxdb","image":"gcr.io/google_containers/heapster_influxdb:v0.3","ports":[{"hostPort":8083,"containerPort":8083,"protocol":"TCP"},{"hostPort":8086,"containerPort":8086,"protocol":"TCP"}],"resources":{"limits":{"cpu":"100m","memory":"200Mi"},"requests":{"cpu":"100m","memory":"200Mi"}},"volumeMounts":[{"name":"influxdb-persistent-storage","mountPath":"/data"}],"terminationMessagePath":"/dev/termination-log","imagePullPolicy":"IfNotPresent"},{"name":"grafana","image":"gcr.io/google_containers/heapster_grafana:v0.7","env":[{"name":"INFLUXDB_EXTERNAL_URL","value":"/api/v1/proxy/namespaces/kube-system/services/monitoring-influxdb:api/db/"},{"name":"INFLUXDB_HOST","value":"monitoring-influxdb"},{"name":"INFLUXDB_PORT","value":"8086"}],"resources":{"limits":{"cpu":"100m","memory":"100Mi"},"requests":{"cpu":"100m","memory":"100Mi"}},"terminationMessagePath":"/dev/termination-log","imagePullPolicy":"IfNotPresent"}],"restartPolicy":"Always","terminationGracePeriodSeconds":30,"dnsPolicy":"ClusterFirst"}}},"status":{"replicas":1,"observedGeneration":1}}]}'
31
+ http_version:
32
+ recorded_at: Thu, 12 Nov 2015 19:29:23 GMT
33
+ - request:
34
+ method: get
35
+ uri: https://vagrant:vagrant@kube.local/api/v1/replicationcontrollers?labelSelector=name=rhea-7370-foo-bar
36
+ body:
37
+ encoding: US-ASCII
38
+ string: ''
39
+ headers:
40
+ Accept:
41
+ - "*/*; q=0.5, application/xml"
42
+ Accept-Encoding:
43
+ - gzip, deflate
44
+ User-Agent:
45
+ - Ruby
46
+ response:
47
+ status:
48
+ code: 200
49
+ message: OK
50
+ headers:
51
+ Content-Type:
52
+ - application/json
53
+ Date:
54
+ - Thu, 12 Nov 2015 19:29:28 GMT
55
+ Content-Length:
56
+ - '147'
57
+ body:
58
+ encoding: UTF-8
59
+ string: '{"kind":"ReplicationControllerList","apiVersion":"v1","metadata":{"selfLink":"/api/v1/replicationcontrollers","resourceVersion":"2782"},"items":[]}'
60
+ http_version:
61
+ recorded_at: Thu, 12 Nov 2015 19:29:28 GMT
62
+ - request:
63
+ method: post
64
+ uri: https://vagrant:vagrant@kube.local/api/v1/namespaces/default/replicationcontrollers
65
+ body:
66
+ encoding: UTF-8
67
+ string: '{"metadata":{"name":"rhea-7370-foo-bar","namespace":"default","labels":{"name":"rhea-7370-foo-bar"},"annotations":{"rhea_command":"foo
68
+ -bar"}},"spec":{"replicas":1,"selector":{"name":"rhea-7370-foo-bar"},"template":{"metadata":{"labels":{"name":"rhea-7370-foo-bar"},"annotations":{"rhea_command":"foo
69
+ -bar"}},"spec":{"containers":[{"name":"rhea-7370-foo-bar","image":"docker.local/myimage:latest","env":[{"name":"MY_ENV_VAR_NAME","value":"my_env_var_value"}],"command":["foo","-bar"]}]}}},"kind":"ReplicationController","apiVersion":"v1"}'
70
+ headers:
71
+ Accept:
72
+ - "*/*; q=0.5, application/xml"
73
+ Accept-Encoding:
74
+ - gzip, deflate
75
+ Content-Length:
76
+ - '526'
77
+ User-Agent:
78
+ - Ruby
79
+ response:
80
+ status:
81
+ code: 201
82
+ message: Created
83
+ headers:
84
+ Content-Type:
85
+ - application/json
86
+ Date:
87
+ - Thu, 12 Nov 2015 19:29:33 GMT
88
+ Content-Length:
89
+ - '961'
90
+ body:
91
+ encoding: UTF-8
92
+ string: '{"kind":"ReplicationController","apiVersion":"v1","metadata":{"name":"rhea-7370-foo-bar","namespace":"default","selfLink":"/api/v1/namespaces/default/replicationcontrollers/rhea-7370-foo-bar","uid":"b3c732b6-8973-11e5-8c9b-0800279dd272","resourceVersion":"2789","generation":1,"creationTimestamp":"2015-11-12T19:29:33Z","labels":{"name":"rhea-7370-foo-bar"},"annotations":{"rhea_command":"foo
93
+ -bar"}},"spec":{"replicas":1,"selector":{"name":"rhea-7370-foo-bar"},"template":{"metadata":{"creationTimestamp":null,"labels":{"name":"rhea-7370-foo-bar"},"annotations":{"rhea_command":"foo
94
+ -bar"}},"spec":{"containers":[{"name":"rhea-7370-foo-bar","image":"docker.local/myimage:latest","command":["foo","-bar"],"env":[{"name":"MY_ENV_VAR_NAME","value":"my_env_var_value"}],"resources":{},"terminationMessagePath":"/dev/termination-log","imagePullPolicy":"Always"}],"restartPolicy":"Always","terminationGracePeriodSeconds":30,"dnsPolicy":"ClusterFirst"}}},"status":{"replicas":0}}'
95
+ http_version:
96
+ recorded_at: Thu, 12 Nov 2015 19:29:33 GMT
97
+ - request:
98
+ method: get
99
+ uri: https://vagrant:vagrant@kube.local/api/v1/replicationcontrollers
100
+ body:
101
+ encoding: US-ASCII
102
+ string: ''
103
+ headers:
104
+ Accept:
105
+ - "*/*; q=0.5, application/xml"
106
+ Accept-Encoding:
107
+ - gzip, deflate
108
+ User-Agent:
109
+ - Ruby
110
+ response:
111
+ status:
112
+ code: 200
113
+ message: OK
114
+ headers:
115
+ Content-Type:
116
+ - application/json
117
+ Date:
118
+ - Thu, 12 Nov 2015 19:29:38 GMT
119
+ Transfer-Encoding:
120
+ - chunked
121
+ body:
122
+ encoding: UTF-8
123
+ string: '{"kind":"ReplicationControllerList","apiVersion":"v1","metadata":{"selfLink":"/api/v1/replicationcontrollers","resourceVersion":"2790"},"items":[{"metadata":{"name":"rhea-7370-foo-bar","namespace":"default","selfLink":"/api/v1/namespaces/default/replicationcontrollers/rhea-7370-foo-bar","uid":"b3c732b6-8973-11e5-8c9b-0800279dd272","resourceVersion":"2790","generation":1,"creationTimestamp":"2015-11-12T19:29:33Z","labels":{"name":"rhea-7370-foo-bar"},"annotations":{"rhea_command":"foo
124
+ -bar"}},"spec":{"replicas":1,"selector":{"name":"rhea-7370-foo-bar"},"template":{"metadata":{"creationTimestamp":null,"labels":{"name":"rhea-7370-foo-bar"},"annotations":{"rhea_command":"foo
125
+ -bar"}},"spec":{"containers":[{"name":"rhea-7370-foo-bar","image":"docker.local/myimage:latest","command":["foo","-bar"],"env":[{"name":"MY_ENV_VAR_NAME","value":"my_env_var_value"}],"resources":{},"terminationMessagePath":"/dev/termination-log","imagePullPolicy":"Always"}],"restartPolicy":"Always","terminationGracePeriodSeconds":30,"dnsPolicy":"ClusterFirst"}}},"status":{"replicas":1,"observedGeneration":1}},{"metadata":{"name":"kube-dns-v8","namespace":"kube-system","selfLink":"/api/v1/namespaces/kube-system/replicationcontrollers/kube-dns-v8","uid":"e97525d7-8967-11e5-8c9b-0800279dd272","resourceVersion":"63","generation":1,"creationTimestamp":"2015-11-12T18:05:09Z","labels":{"k8s-app":"kube-dns","kubernetes.io/cluster-service":"true","version":"v8"}},"spec":{"replicas":1,"selector":{"k8s-app":"kube-dns","version":"v8"},"template":{"metadata":{"creationTimestamp":null,"labels":{"k8s-app":"kube-dns","kubernetes.io/cluster-service":"true","version":"v8"}},"spec":{"volumes":[{"name":"etcd-storage","emptyDir":{}}],"containers":[{"name":"etcd","image":"gcr.io/google_containers/etcd:2.0.9","command":["/usr/local/bin/etcd","-data-dir","/var/etcd/data","-listen-client-urls","http://127.0.0.1:2379,http://127.0.0.1:4001","-advertise-client-urls","http://127.0.0.1:2379,http://127.0.0.1:4001","-initial-cluster-token","skydns-etcd"],"resources":{"limits":{"cpu":"100m","memory":"50Mi"},"requests":{"cpu":"100m","memory":"50Mi"}},"volumeMounts":[{"name":"etcd-storage","mountPath":"/var/etcd/data"}],"terminationMessagePath":"/dev/termination-log","imagePullPolicy":"IfNotPresent"},{"name":"kube2sky","image":"gcr.io/google_containers/kube2sky:1.11","args":["-domain=cluster.local"],"resources":{"limits":{"cpu":"100m","memory":"50Mi"},"requests":{"cpu":"100m","memory":"50Mi"}},"terminationMessagePath":"/dev/termination-log","imagePullPolicy":"IfNotPresent"},{"name":"skydns","image":"gcr.io/google_containers/skydns:2015-03-11-001","args":["-machines=http://localhost:4001","-addr=0.0.0.0:53","-domain=cluster.local."],"ports":[{"name":"dns","containerPort":53,"protocol":"UDP"},{"name":"dns-tcp","containerPort":53,"protocol":"TCP"}],"resources":{"limits":{"cpu":"100m","memory":"50Mi"},"requests":{"cpu":"100m","memory":"50Mi"}},"livenessProbe":{"httpGet":{"path":"/healthz","port":8080,"scheme":"HTTP"},"initialDelaySeconds":30,"timeoutSeconds":5},"terminationMessagePath":"/dev/termination-log","imagePullPolicy":"IfNotPresent"},{"name":"healthz","image":"gcr.io/google_containers/exechealthz:1.0","args":["-cmd=nslookup
126
+ kubernetes.default.svc.cluster.local localhost \u003e/dev/null","-port=8080"],"ports":[{"containerPort":8080,"protocol":"TCP"}],"resources":{"limits":{"cpu":"10m","memory":"20Mi"},"requests":{"cpu":"10m","memory":"20Mi"}},"terminationMessagePath":"/dev/termination-log","imagePullPolicy":"IfNotPresent"}],"restartPolicy":"Always","terminationGracePeriodSeconds":30,"dnsPolicy":"Default"}}},"status":{"replicas":1,"observedGeneration":1}},{"metadata":{"name":"kube-ui-v1","namespace":"kube-system","selfLink":"/api/v1/namespaces/kube-system/replicationcontrollers/kube-ui-v1","uid":"e962afd4-8967-11e5-8c9b-0800279dd272","resourceVersion":"58","generation":1,"creationTimestamp":"2015-11-12T18:05:09Z","labels":{"k8s-app":"kube-ui","kubernetes.io/cluster-service":"true","version":"v1"}},"spec":{"replicas":1,"selector":{"k8s-app":"kube-ui","version":"v1"},"template":{"metadata":{"creationTimestamp":null,"labels":{"k8s-app":"kube-ui","kubernetes.io/cluster-service":"true","version":"v1"}},"spec":{"containers":[{"name":"kube-ui","image":"gcr.io/google_containers/kube-ui:v1.1","ports":[{"containerPort":8080,"protocol":"TCP"}],"resources":{"limits":{"cpu":"100m","memory":"50Mi"},"requests":{"cpu":"100m","memory":"50Mi"}},"livenessProbe":{"httpGet":{"path":"/","port":8080,"scheme":"HTTP"},"initialDelaySeconds":30,"timeoutSeconds":5},"terminationMessagePath":"/dev/termination-log","imagePullPolicy":"IfNotPresent"}],"restartPolicy":"Always","terminationGracePeriodSeconds":30,"dnsPolicy":"ClusterFirst"}}},"status":{"replicas":1,"observedGeneration":1}},{"metadata":{"name":"monitoring-heapster-v8","namespace":"kube-system","selfLink":"/api/v1/namespaces/kube-system/replicationcontrollers/monitoring-heapster-v8","uid":"e9614810-8967-11e5-8c9b-0800279dd272","resourceVersion":"49","generation":1,"creationTimestamp":"2015-11-12T18:05:09Z","labels":{"k8s-app":"heapster","kubernetes.io/cluster-service":"true","version":"v8"}},"spec":{"replicas":1,"selector":{"k8s-app":"heapster","version":"v8"},"template":{"metadata":{"creationTimestamp":null,"labels":{"k8s-app":"heapster","kubernetes.io/cluster-service":"true","version":"v8"}},"spec":{"containers":[{"name":"heapster","image":"gcr.io/google_containers/heapster:v0.17.0","command":["/heapster","--source=kubernetes:''''","--sink=influxdb:http://monitoring-influxdb:8086"],"resources":{"limits":{"cpu":"100m","memory":"300Mi"},"requests":{"cpu":"100m","memory":"300Mi"}},"terminationMessagePath":"/dev/termination-log","imagePullPolicy":"IfNotPresent"}],"restartPolicy":"Always","terminationGracePeriodSeconds":30,"dnsPolicy":"ClusterFirst"}}},"status":{"replicas":1,"observedGeneration":1}},{"metadata":{"name":"monitoring-influx-grafana-v1","namespace":"kube-system","selfLink":"/api/v1/namespaces/kube-system/replicationcontrollers/monitoring-influx-grafana-v1","uid":"e9749ef6-8967-11e5-8c9b-0800279dd272","resourceVersion":"62","generation":1,"creationTimestamp":"2015-11-12T18:05:09Z","labels":{"k8s-app":"influxGrafana","kubernetes.io/cluster-service":"true","version":"v1"}},"spec":{"replicas":1,"selector":{"k8s-app":"influxGrafana","version":"v1"},"template":{"metadata":{"creationTimestamp":null,"labels":{"k8s-app":"influxGrafana","kubernetes.io/cluster-service":"true","version":"v1"}},"spec":{"volumes":[{"name":"influxdb-persistent-storage","emptyDir":{}}],"containers":[{"name":"influxdb","image":"gcr.io/google_containers/heapster_influxdb:v0.3","ports":[{"hostPort":8083,"containerPort":8083,"protocol":"TCP"},{"hostPort":8086,"containerPort":8086,"protocol":"TCP"}],"resources":{"limits":{"cpu":"100m","memory":"200Mi"},"requests":{"cpu":"100m","memory":"200Mi"}},"volumeMounts":[{"name":"influxdb-persistent-storage","mountPath":"/data"}],"terminationMessagePath":"/dev/termination-log","imagePullPolicy":"IfNotPresent"},{"name":"grafana","image":"gcr.io/google_containers/heapster_grafana:v0.7","env":[{"name":"INFLUXDB_EXTERNAL_URL","value":"/api/v1/proxy/namespaces/kube-system/services/monitoring-influxdb:api/db/"},{"name":"INFLUXDB_HOST","value":"monitoring-influxdb"},{"name":"INFLUXDB_PORT","value":"8086"}],"resources":{"limits":{"cpu":"100m","memory":"100Mi"},"requests":{"cpu":"100m","memory":"100Mi"}},"terminationMessagePath":"/dev/termination-log","imagePullPolicy":"IfNotPresent"}],"restartPolicy":"Always","terminationGracePeriodSeconds":30,"dnsPolicy":"ClusterFirst"}}},"status":{"replicas":1,"observedGeneration":1}}]}'
127
+ http_version:
128
+ recorded_at: Thu, 12 Nov 2015 19:29:38 GMT
129
+ - request:
130
+ method: get
131
+ uri: https://vagrant:vagrant@kube.local/api/v1/replicationcontrollers
132
+ body:
133
+ encoding: US-ASCII
134
+ string: ''
135
+ headers:
136
+ Accept:
137
+ - "*/*; q=0.5, application/xml"
138
+ Accept-Encoding:
139
+ - gzip, deflate
140
+ User-Agent:
141
+ - Ruby
142
+ response:
143
+ status:
144
+ code: 200
145
+ message: OK
146
+ headers:
147
+ Content-Type:
148
+ - application/json
149
+ Date:
150
+ - Thu, 12 Nov 2015 19:32:10 GMT
151
+ Transfer-Encoding:
152
+ - chunked
153
+ body:
154
+ encoding: UTF-8
155
+ string: '{"kind":"ReplicationControllerList","apiVersion":"v1","metadata":{"selfLink":"/api/v1/replicationcontrollers","resourceVersion":"2875"},"items":[{"metadata":{"name":"rhea-7370-foo-bar","namespace":"default","selfLink":"/api/v1/namespaces/default/replicationcontrollers/rhea-7370-foo-bar","uid":"b3c732b6-8973-11e5-8c9b-0800279dd272","resourceVersion":"2790","generation":1,"creationTimestamp":"2015-11-12T19:29:33Z","labels":{"name":"rhea-7370-foo-bar"},"annotations":{"rhea_command":"foo
156
+ -bar"}},"spec":{"replicas":1,"selector":{"name":"rhea-7370-foo-bar"},"template":{"metadata":{"creationTimestamp":null,"labels":{"name":"rhea-7370-foo-bar"},"annotations":{"rhea_command":"foo
157
+ -bar"}},"spec":{"containers":[{"name":"rhea-7370-foo-bar","image":"docker.local/myimage:latest","command":["foo","-bar"],"env":[{"name":"MY_ENV_VAR_NAME","value":"my_env_var_value"}],"resources":{},"terminationMessagePath":"/dev/termination-log","imagePullPolicy":"Always"}],"restartPolicy":"Always","terminationGracePeriodSeconds":30,"dnsPolicy":"ClusterFirst"}}},"status":{"replicas":1,"observedGeneration":1}},{"metadata":{"name":"kube-dns-v8","namespace":"kube-system","selfLink":"/api/v1/namespaces/kube-system/replicationcontrollers/kube-dns-v8","uid":"e97525d7-8967-11e5-8c9b-0800279dd272","resourceVersion":"63","generation":1,"creationTimestamp":"2015-11-12T18:05:09Z","labels":{"k8s-app":"kube-dns","kubernetes.io/cluster-service":"true","version":"v8"}},"spec":{"replicas":1,"selector":{"k8s-app":"kube-dns","version":"v8"},"template":{"metadata":{"creationTimestamp":null,"labels":{"k8s-app":"kube-dns","kubernetes.io/cluster-service":"true","version":"v8"}},"spec":{"volumes":[{"name":"etcd-storage","emptyDir":{}}],"containers":[{"name":"etcd","image":"gcr.io/google_containers/etcd:2.0.9","command":["/usr/local/bin/etcd","-data-dir","/var/etcd/data","-listen-client-urls","http://127.0.0.1:2379,http://127.0.0.1:4001","-advertise-client-urls","http://127.0.0.1:2379,http://127.0.0.1:4001","-initial-cluster-token","skydns-etcd"],"resources":{"limits":{"cpu":"100m","memory":"50Mi"},"requests":{"cpu":"100m","memory":"50Mi"}},"volumeMounts":[{"name":"etcd-storage","mountPath":"/var/etcd/data"}],"terminationMessagePath":"/dev/termination-log","imagePullPolicy":"IfNotPresent"},{"name":"kube2sky","image":"gcr.io/google_containers/kube2sky:1.11","args":["-domain=cluster.local"],"resources":{"limits":{"cpu":"100m","memory":"50Mi"},"requests":{"cpu":"100m","memory":"50Mi"}},"terminationMessagePath":"/dev/termination-log","imagePullPolicy":"IfNotPresent"},{"name":"skydns","image":"gcr.io/google_containers/skydns:2015-03-11-001","args":["-machines=http://localhost:4001","-addr=0.0.0.0:53","-domain=cluster.local."],"ports":[{"name":"dns","containerPort":53,"protocol":"UDP"},{"name":"dns-tcp","containerPort":53,"protocol":"TCP"}],"resources":{"limits":{"cpu":"100m","memory":"50Mi"},"requests":{"cpu":"100m","memory":"50Mi"}},"livenessProbe":{"httpGet":{"path":"/healthz","port":8080,"scheme":"HTTP"},"initialDelaySeconds":30,"timeoutSeconds":5},"terminationMessagePath":"/dev/termination-log","imagePullPolicy":"IfNotPresent"},{"name":"healthz","image":"gcr.io/google_containers/exechealthz:1.0","args":["-cmd=nslookup
158
+ kubernetes.default.svc.cluster.local localhost \u003e/dev/null","-port=8080"],"ports":[{"containerPort":8080,"protocol":"TCP"}],"resources":{"limits":{"cpu":"10m","memory":"20Mi"},"requests":{"cpu":"10m","memory":"20Mi"}},"terminationMessagePath":"/dev/termination-log","imagePullPolicy":"IfNotPresent"}],"restartPolicy":"Always","terminationGracePeriodSeconds":30,"dnsPolicy":"Default"}}},"status":{"replicas":1,"observedGeneration":1}},{"metadata":{"name":"kube-ui-v1","namespace":"kube-system","selfLink":"/api/v1/namespaces/kube-system/replicationcontrollers/kube-ui-v1","uid":"e962afd4-8967-11e5-8c9b-0800279dd272","resourceVersion":"58","generation":1,"creationTimestamp":"2015-11-12T18:05:09Z","labels":{"k8s-app":"kube-ui","kubernetes.io/cluster-service":"true","version":"v1"}},"spec":{"replicas":1,"selector":{"k8s-app":"kube-ui","version":"v1"},"template":{"metadata":{"creationTimestamp":null,"labels":{"k8s-app":"kube-ui","kubernetes.io/cluster-service":"true","version":"v1"}},"spec":{"containers":[{"name":"kube-ui","image":"gcr.io/google_containers/kube-ui:v1.1","ports":[{"containerPort":8080,"protocol":"TCP"}],"resources":{"limits":{"cpu":"100m","memory":"50Mi"},"requests":{"cpu":"100m","memory":"50Mi"}},"livenessProbe":{"httpGet":{"path":"/","port":8080,"scheme":"HTTP"},"initialDelaySeconds":30,"timeoutSeconds":5},"terminationMessagePath":"/dev/termination-log","imagePullPolicy":"IfNotPresent"}],"restartPolicy":"Always","terminationGracePeriodSeconds":30,"dnsPolicy":"ClusterFirst"}}},"status":{"replicas":1,"observedGeneration":1}},{"metadata":{"name":"monitoring-heapster-v8","namespace":"kube-system","selfLink":"/api/v1/namespaces/kube-system/replicationcontrollers/monitoring-heapster-v8","uid":"e9614810-8967-11e5-8c9b-0800279dd272","resourceVersion":"49","generation":1,"creationTimestamp":"2015-11-12T18:05:09Z","labels":{"k8s-app":"heapster","kubernetes.io/cluster-service":"true","version":"v8"}},"spec":{"replicas":1,"selector":{"k8s-app":"heapster","version":"v8"},"template":{"metadata":{"creationTimestamp":null,"labels":{"k8s-app":"heapster","kubernetes.io/cluster-service":"true","version":"v8"}},"spec":{"containers":[{"name":"heapster","image":"gcr.io/google_containers/heapster:v0.17.0","command":["/heapster","--source=kubernetes:''''","--sink=influxdb:http://monitoring-influxdb:8086"],"resources":{"limits":{"cpu":"100m","memory":"300Mi"},"requests":{"cpu":"100m","memory":"300Mi"}},"terminationMessagePath":"/dev/termination-log","imagePullPolicy":"IfNotPresent"}],"restartPolicy":"Always","terminationGracePeriodSeconds":30,"dnsPolicy":"ClusterFirst"}}},"status":{"replicas":1,"observedGeneration":1}},{"metadata":{"name":"monitoring-influx-grafana-v1","namespace":"kube-system","selfLink":"/api/v1/namespaces/kube-system/replicationcontrollers/monitoring-influx-grafana-v1","uid":"e9749ef6-8967-11e5-8c9b-0800279dd272","resourceVersion":"62","generation":1,"creationTimestamp":"2015-11-12T18:05:09Z","labels":{"k8s-app":"influxGrafana","kubernetes.io/cluster-service":"true","version":"v1"}},"spec":{"replicas":1,"selector":{"k8s-app":"influxGrafana","version":"v1"},"template":{"metadata":{"creationTimestamp":null,"labels":{"k8s-app":"influxGrafana","kubernetes.io/cluster-service":"true","version":"v1"}},"spec":{"volumes":[{"name":"influxdb-persistent-storage","emptyDir":{}}],"containers":[{"name":"influxdb","image":"gcr.io/google_containers/heapster_influxdb:v0.3","ports":[{"hostPort":8083,"containerPort":8083,"protocol":"TCP"},{"hostPort":8086,"containerPort":8086,"protocol":"TCP"}],"resources":{"limits":{"cpu":"100m","memory":"200Mi"},"requests":{"cpu":"100m","memory":"200Mi"}},"volumeMounts":[{"name":"influxdb-persistent-storage","mountPath":"/data"}],"terminationMessagePath":"/dev/termination-log","imagePullPolicy":"IfNotPresent"},{"name":"grafana","image":"gcr.io/google_containers/heapster_grafana:v0.7","env":[{"name":"INFLUXDB_EXTERNAL_URL","value":"/api/v1/proxy/namespaces/kube-system/services/monitoring-influxdb:api/db/"},{"name":"INFLUXDB_HOST","value":"monitoring-influxdb"},{"name":"INFLUXDB_PORT","value":"8086"}],"resources":{"limits":{"cpu":"100m","memory":"100Mi"},"requests":{"cpu":"100m","memory":"100Mi"}},"terminationMessagePath":"/dev/termination-log","imagePullPolicy":"IfNotPresent"}],"restartPolicy":"Always","terminationGracePeriodSeconds":30,"dnsPolicy":"ClusterFirst"}}},"status":{"replicas":1,"observedGeneration":1}}]}'
159
+ http_version:
160
+ recorded_at: Thu, 12 Nov 2015 19:32:10 GMT
161
+ - request:
162
+ method: delete
163
+ uri: https://vagrant:vagrant@kube.local/api/v1/namespaces/default/replicationcontrollers/rhea-7370-foo-bar
164
+ body:
165
+ encoding: US-ASCII
166
+ string: ''
167
+ headers:
168
+ Accept:
169
+ - "*/*; q=0.5, application/xml"
170
+ Accept-Encoding:
171
+ - gzip, deflate
172
+ User-Agent:
173
+ - Ruby
174
+ response:
175
+ status:
176
+ code: 200
177
+ message: OK
178
+ headers:
179
+ Content-Type:
180
+ - application/json
181
+ Date:
182
+ - Thu, 12 Nov 2015 19:32:15 GMT
183
+ Content-Length:
184
+ - '100'
185
+ body:
186
+ encoding: UTF-8
187
+ string: |-
188
+ {
189
+ "kind": "Status",
190
+ "apiVersion": "v1",
191
+ "metadata": {},
192
+ "status": "Success",
193
+ "code": 200
194
+ }
195
+ http_version:
196
+ recorded_at: Thu, 12 Nov 2015 19:32:15 GMT
197
+ recorded_with: VCR 2.9.3
@@ -0,0 +1,163 @@
1
+ ---
2
+ http_interactions:
3
+ - request:
4
+ method: get
5
+ uri: https://vagrant:vagrant@kube.local/api/v1/replicationcontrollers
6
+ body:
7
+ encoding: US-ASCII
8
+ string: ''
9
+ headers:
10
+ Accept:
11
+ - "*/*; q=0.5, application/xml"
12
+ Accept-Encoding:
13
+ - gzip, deflate
14
+ User-Agent:
15
+ - Ruby
16
+ response:
17
+ status:
18
+ code: 200
19
+ message: OK
20
+ headers:
21
+ Content-Type:
22
+ - application/json
23
+ Date:
24
+ - Thu, 12 Nov 2015 19:24:03 GMT
25
+ Transfer-Encoding:
26
+ - chunked
27
+ body:
28
+ encoding: UTF-8
29
+ string: '{"kind":"ReplicationControllerList","apiVersion":"v1","metadata":{"selfLink":"/api/v1/replicationcontrollers","resourceVersion":"2596"},"items":[{"metadata":{"name":"kube-dns-v8","namespace":"kube-system","selfLink":"/api/v1/namespaces/kube-system/replicationcontrollers/kube-dns-v8","uid":"e97525d7-8967-11e5-8c9b-0800279dd272","resourceVersion":"63","generation":1,"creationTimestamp":"2015-11-12T18:05:09Z","labels":{"k8s-app":"kube-dns","kubernetes.io/cluster-service":"true","version":"v8"}},"spec":{"replicas":1,"selector":{"k8s-app":"kube-dns","version":"v8"},"template":{"metadata":{"creationTimestamp":null,"labels":{"k8s-app":"kube-dns","kubernetes.io/cluster-service":"true","version":"v8"}},"spec":{"volumes":[{"name":"etcd-storage","emptyDir":{}}],"containers":[{"name":"etcd","image":"gcr.io/google_containers/etcd:2.0.9","command":["/usr/local/bin/etcd","-data-dir","/var/etcd/data","-listen-client-urls","http://127.0.0.1:2379,http://127.0.0.1:4001","-advertise-client-urls","http://127.0.0.1:2379,http://127.0.0.1:4001","-initial-cluster-token","skydns-etcd"],"resources":{"limits":{"cpu":"100m","memory":"50Mi"},"requests":{"cpu":"100m","memory":"50Mi"}},"volumeMounts":[{"name":"etcd-storage","mountPath":"/var/etcd/data"}],"terminationMessagePath":"/dev/termination-log","imagePullPolicy":"IfNotPresent"},{"name":"kube2sky","image":"gcr.io/google_containers/kube2sky:1.11","args":["-domain=cluster.local"],"resources":{"limits":{"cpu":"100m","memory":"50Mi"},"requests":{"cpu":"100m","memory":"50Mi"}},"terminationMessagePath":"/dev/termination-log","imagePullPolicy":"IfNotPresent"},{"name":"skydns","image":"gcr.io/google_containers/skydns:2015-03-11-001","args":["-machines=http://localhost:4001","-addr=0.0.0.0:53","-domain=cluster.local."],"ports":[{"name":"dns","containerPort":53,"protocol":"UDP"},{"name":"dns-tcp","containerPort":53,"protocol":"TCP"}],"resources":{"limits":{"cpu":"100m","memory":"50Mi"},"requests":{"cpu":"100m","memory":"50Mi"}},"livenessProbe":{"httpGet":{"path":"/healthz","port":8080,"scheme":"HTTP"},"initialDelaySeconds":30,"timeoutSeconds":5},"terminationMessagePath":"/dev/termination-log","imagePullPolicy":"IfNotPresent"},{"name":"healthz","image":"gcr.io/google_containers/exechealthz:1.0","args":["-cmd=nslookup
30
+ kubernetes.default.svc.cluster.local localhost \u003e/dev/null","-port=8080"],"ports":[{"containerPort":8080,"protocol":"TCP"}],"resources":{"limits":{"cpu":"10m","memory":"20Mi"},"requests":{"cpu":"10m","memory":"20Mi"}},"terminationMessagePath":"/dev/termination-log","imagePullPolicy":"IfNotPresent"}],"restartPolicy":"Always","terminationGracePeriodSeconds":30,"dnsPolicy":"Default"}}},"status":{"replicas":1,"observedGeneration":1}},{"metadata":{"name":"kube-ui-v1","namespace":"kube-system","selfLink":"/api/v1/namespaces/kube-system/replicationcontrollers/kube-ui-v1","uid":"e962afd4-8967-11e5-8c9b-0800279dd272","resourceVersion":"58","generation":1,"creationTimestamp":"2015-11-12T18:05:09Z","labels":{"k8s-app":"kube-ui","kubernetes.io/cluster-service":"true","version":"v1"}},"spec":{"replicas":1,"selector":{"k8s-app":"kube-ui","version":"v1"},"template":{"metadata":{"creationTimestamp":null,"labels":{"k8s-app":"kube-ui","kubernetes.io/cluster-service":"true","version":"v1"}},"spec":{"containers":[{"name":"kube-ui","image":"gcr.io/google_containers/kube-ui:v1.1","ports":[{"containerPort":8080,"protocol":"TCP"}],"resources":{"limits":{"cpu":"100m","memory":"50Mi"},"requests":{"cpu":"100m","memory":"50Mi"}},"livenessProbe":{"httpGet":{"path":"/","port":8080,"scheme":"HTTP"},"initialDelaySeconds":30,"timeoutSeconds":5},"terminationMessagePath":"/dev/termination-log","imagePullPolicy":"IfNotPresent"}],"restartPolicy":"Always","terminationGracePeriodSeconds":30,"dnsPolicy":"ClusterFirst"}}},"status":{"replicas":1,"observedGeneration":1}},{"metadata":{"name":"monitoring-heapster-v8","namespace":"kube-system","selfLink":"/api/v1/namespaces/kube-system/replicationcontrollers/monitoring-heapster-v8","uid":"e9614810-8967-11e5-8c9b-0800279dd272","resourceVersion":"49","generation":1,"creationTimestamp":"2015-11-12T18:05:09Z","labels":{"k8s-app":"heapster","kubernetes.io/cluster-service":"true","version":"v8"}},"spec":{"replicas":1,"selector":{"k8s-app":"heapster","version":"v8"},"template":{"metadata":{"creationTimestamp":null,"labels":{"k8s-app":"heapster","kubernetes.io/cluster-service":"true","version":"v8"}},"spec":{"containers":[{"name":"heapster","image":"gcr.io/google_containers/heapster:v0.17.0","command":["/heapster","--source=kubernetes:''''","--sink=influxdb:http://monitoring-influxdb:8086"],"resources":{"limits":{"cpu":"100m","memory":"300Mi"},"requests":{"cpu":"100m","memory":"300Mi"}},"terminationMessagePath":"/dev/termination-log","imagePullPolicy":"IfNotPresent"}],"restartPolicy":"Always","terminationGracePeriodSeconds":30,"dnsPolicy":"ClusterFirst"}}},"status":{"replicas":1,"observedGeneration":1}},{"metadata":{"name":"monitoring-influx-grafana-v1","namespace":"kube-system","selfLink":"/api/v1/namespaces/kube-system/replicationcontrollers/monitoring-influx-grafana-v1","uid":"e9749ef6-8967-11e5-8c9b-0800279dd272","resourceVersion":"62","generation":1,"creationTimestamp":"2015-11-12T18:05:09Z","labels":{"k8s-app":"influxGrafana","kubernetes.io/cluster-service":"true","version":"v1"}},"spec":{"replicas":1,"selector":{"k8s-app":"influxGrafana","version":"v1"},"template":{"metadata":{"creationTimestamp":null,"labels":{"k8s-app":"influxGrafana","kubernetes.io/cluster-service":"true","version":"v1"}},"spec":{"volumes":[{"name":"influxdb-persistent-storage","emptyDir":{}}],"containers":[{"name":"influxdb","image":"gcr.io/google_containers/heapster_influxdb:v0.3","ports":[{"hostPort":8083,"containerPort":8083,"protocol":"TCP"},{"hostPort":8086,"containerPort":8086,"protocol":"TCP"}],"resources":{"limits":{"cpu":"100m","memory":"200Mi"},"requests":{"cpu":"100m","memory":"200Mi"}},"volumeMounts":[{"name":"influxdb-persistent-storage","mountPath":"/data"}],"terminationMessagePath":"/dev/termination-log","imagePullPolicy":"IfNotPresent"},{"name":"grafana","image":"gcr.io/google_containers/heapster_grafana:v0.7","env":[{"name":"INFLUXDB_EXTERNAL_URL","value":"/api/v1/proxy/namespaces/kube-system/services/monitoring-influxdb:api/db/"},{"name":"INFLUXDB_HOST","value":"monitoring-influxdb"},{"name":"INFLUXDB_PORT","value":"8086"}],"resources":{"limits":{"cpu":"100m","memory":"100Mi"},"requests":{"cpu":"100m","memory":"100Mi"}},"terminationMessagePath":"/dev/termination-log","imagePullPolicy":"IfNotPresent"}],"restartPolicy":"Always","terminationGracePeriodSeconds":30,"dnsPolicy":"ClusterFirst"}}},"status":{"replicas":1,"observedGeneration":1}}]}'
31
+ http_version:
32
+ recorded_at: Thu, 12 Nov 2015 19:24:03 GMT
33
+ - request:
34
+ method: get
35
+ uri: https://vagrant:vagrant@kube.local/api/v1/replicationcontrollers?labelSelector=name=rhea-7370-foo-bar
36
+ body:
37
+ encoding: US-ASCII
38
+ string: ''
39
+ headers:
40
+ Accept:
41
+ - "*/*; q=0.5, application/xml"
42
+ Accept-Encoding:
43
+ - gzip, deflate
44
+ User-Agent:
45
+ - Ruby
46
+ response:
47
+ status:
48
+ code: 200
49
+ message: OK
50
+ headers:
51
+ Content-Type:
52
+ - application/json
53
+ Date:
54
+ - Thu, 12 Nov 2015 19:24:08 GMT
55
+ Content-Length:
56
+ - '147'
57
+ body:
58
+ encoding: UTF-8
59
+ string: '{"kind":"ReplicationControllerList","apiVersion":"v1","metadata":{"selfLink":"/api/v1/replicationcontrollers","resourceVersion":"2597"},"items":[]}'
60
+ http_version:
61
+ recorded_at: Thu, 12 Nov 2015 19:24:08 GMT
62
+ - request:
63
+ method: post
64
+ uri: https://vagrant:vagrant@kube.local/api/v1/namespaces/default/replicationcontrollers
65
+ body:
66
+ encoding: UTF-8
67
+ string: '{"metadata":{"name":"rhea-7370-foo-bar","namespace":"default","labels":{"name":"rhea-7370-foo-bar"},"annotations":{"rhea_command":"foo
68
+ -bar"}},"spec":{"replicas":1,"selector":{"name":"rhea-7370-foo-bar"},"template":{"metadata":{"labels":{"name":"rhea-7370-foo-bar"},"annotations":{"rhea_command":"foo
69
+ -bar"}},"spec":{"containers":[{"name":"rhea-7370-foo-bar","image":"docker.local/myimage:latest","env":[{"name":"MY_ENV_VAR_NAME","value":"my_env_var_value"}],"command":["foo","-bar"]}]}}},"kind":"ReplicationController","apiVersion":"v1"}'
70
+ headers:
71
+ Accept:
72
+ - "*/*; q=0.5, application/xml"
73
+ Accept-Encoding:
74
+ - gzip, deflate
75
+ Content-Length:
76
+ - '526'
77
+ User-Agent:
78
+ - Ruby
79
+ response:
80
+ status:
81
+ code: 201
82
+ message: Created
83
+ headers:
84
+ Content-Type:
85
+ - application/json
86
+ Date:
87
+ - Thu, 12 Nov 2015 19:24:13 GMT
88
+ Content-Length:
89
+ - '961'
90
+ body:
91
+ encoding: UTF-8
92
+ string: '{"kind":"ReplicationController","apiVersion":"v1","metadata":{"name":"rhea-7370-foo-bar","namespace":"default","selfLink":"/api/v1/namespaces/default/replicationcontrollers/rhea-7370-foo-bar","uid":"f514a9d0-8972-11e5-8c9b-0800279dd272","resourceVersion":"2603","generation":1,"creationTimestamp":"2015-11-12T19:24:13Z","labels":{"name":"rhea-7370-foo-bar"},"annotations":{"rhea_command":"foo
93
+ -bar"}},"spec":{"replicas":1,"selector":{"name":"rhea-7370-foo-bar"},"template":{"metadata":{"creationTimestamp":null,"labels":{"name":"rhea-7370-foo-bar"},"annotations":{"rhea_command":"foo
94
+ -bar"}},"spec":{"containers":[{"name":"rhea-7370-foo-bar","image":"docker.local/myimage:latest","command":["foo","-bar"],"env":[{"name":"MY_ENV_VAR_NAME","value":"my_env_var_value"}],"resources":{},"terminationMessagePath":"/dev/termination-log","imagePullPolicy":"Always"}],"restartPolicy":"Always","terminationGracePeriodSeconds":30,"dnsPolicy":"ClusterFirst"}}},"status":{"replicas":0}}'
95
+ http_version:
96
+ recorded_at: Thu, 12 Nov 2015 19:24:13 GMT
97
+ - request:
98
+ method: delete
99
+ uri: https://vagrant:vagrant@kube.local/api/v1/namespaces/default/replicationcontrollers/rhea-7370-foo-bar
100
+ body:
101
+ encoding: US-ASCII
102
+ string: ''
103
+ headers:
104
+ Accept:
105
+ - "*/*; q=0.5, application/xml"
106
+ Accept-Encoding:
107
+ - gzip, deflate
108
+ User-Agent:
109
+ - Ruby
110
+ response:
111
+ status:
112
+ code: 200
113
+ message: OK
114
+ headers:
115
+ Content-Type:
116
+ - application/json
117
+ Date:
118
+ - Thu, 12 Nov 2015 19:24:18 GMT
119
+ Content-Length:
120
+ - '100'
121
+ body:
122
+ encoding: UTF-8
123
+ string: |-
124
+ {
125
+ "kind": "Status",
126
+ "apiVersion": "v1",
127
+ "metadata": {},
128
+ "status": "Success",
129
+ "code": 200
130
+ }
131
+ http_version:
132
+ recorded_at: Thu, 12 Nov 2015 19:24:18 GMT
133
+ - request:
134
+ method: get
135
+ uri: https://vagrant:vagrant@kube.local/api/v1/replicationcontrollers
136
+ body:
137
+ encoding: US-ASCII
138
+ string: ''
139
+ headers:
140
+ Accept:
141
+ - "*/*; q=0.5, application/xml"
142
+ Accept-Encoding:
143
+ - gzip, deflate
144
+ User-Agent:
145
+ - Ruby
146
+ response:
147
+ status:
148
+ code: 200
149
+ message: OK
150
+ headers:
151
+ Content-Type:
152
+ - application/json
153
+ Date:
154
+ - Thu, 12 Nov 2015 19:24:23 GMT
155
+ Transfer-Encoding:
156
+ - chunked
157
+ body:
158
+ encoding: UTF-8
159
+ string: '{"kind":"ReplicationControllerList","apiVersion":"v1","metadata":{"selfLink":"/api/v1/replicationcontrollers","resourceVersion":"2608"},"items":[{"metadata":{"name":"kube-dns-v8","namespace":"kube-system","selfLink":"/api/v1/namespaces/kube-system/replicationcontrollers/kube-dns-v8","uid":"e97525d7-8967-11e5-8c9b-0800279dd272","resourceVersion":"63","generation":1,"creationTimestamp":"2015-11-12T18:05:09Z","labels":{"k8s-app":"kube-dns","kubernetes.io/cluster-service":"true","version":"v8"}},"spec":{"replicas":1,"selector":{"k8s-app":"kube-dns","version":"v8"},"template":{"metadata":{"creationTimestamp":null,"labels":{"k8s-app":"kube-dns","kubernetes.io/cluster-service":"true","version":"v8"}},"spec":{"volumes":[{"name":"etcd-storage","emptyDir":{}}],"containers":[{"name":"etcd","image":"gcr.io/google_containers/etcd:2.0.9","command":["/usr/local/bin/etcd","-data-dir","/var/etcd/data","-listen-client-urls","http://127.0.0.1:2379,http://127.0.0.1:4001","-advertise-client-urls","http://127.0.0.1:2379,http://127.0.0.1:4001","-initial-cluster-token","skydns-etcd"],"resources":{"limits":{"cpu":"100m","memory":"50Mi"},"requests":{"cpu":"100m","memory":"50Mi"}},"volumeMounts":[{"name":"etcd-storage","mountPath":"/var/etcd/data"}],"terminationMessagePath":"/dev/termination-log","imagePullPolicy":"IfNotPresent"},{"name":"kube2sky","image":"gcr.io/google_containers/kube2sky:1.11","args":["-domain=cluster.local"],"resources":{"limits":{"cpu":"100m","memory":"50Mi"},"requests":{"cpu":"100m","memory":"50Mi"}},"terminationMessagePath":"/dev/termination-log","imagePullPolicy":"IfNotPresent"},{"name":"skydns","image":"gcr.io/google_containers/skydns:2015-03-11-001","args":["-machines=http://localhost:4001","-addr=0.0.0.0:53","-domain=cluster.local."],"ports":[{"name":"dns","containerPort":53,"protocol":"UDP"},{"name":"dns-tcp","containerPort":53,"protocol":"TCP"}],"resources":{"limits":{"cpu":"100m","memory":"50Mi"},"requests":{"cpu":"100m","memory":"50Mi"}},"livenessProbe":{"httpGet":{"path":"/healthz","port":8080,"scheme":"HTTP"},"initialDelaySeconds":30,"timeoutSeconds":5},"terminationMessagePath":"/dev/termination-log","imagePullPolicy":"IfNotPresent"},{"name":"healthz","image":"gcr.io/google_containers/exechealthz:1.0","args":["-cmd=nslookup
160
+ kubernetes.default.svc.cluster.local localhost \u003e/dev/null","-port=8080"],"ports":[{"containerPort":8080,"protocol":"TCP"}],"resources":{"limits":{"cpu":"10m","memory":"20Mi"},"requests":{"cpu":"10m","memory":"20Mi"}},"terminationMessagePath":"/dev/termination-log","imagePullPolicy":"IfNotPresent"}],"restartPolicy":"Always","terminationGracePeriodSeconds":30,"dnsPolicy":"Default"}}},"status":{"replicas":1,"observedGeneration":1}},{"metadata":{"name":"kube-ui-v1","namespace":"kube-system","selfLink":"/api/v1/namespaces/kube-system/replicationcontrollers/kube-ui-v1","uid":"e962afd4-8967-11e5-8c9b-0800279dd272","resourceVersion":"58","generation":1,"creationTimestamp":"2015-11-12T18:05:09Z","labels":{"k8s-app":"kube-ui","kubernetes.io/cluster-service":"true","version":"v1"}},"spec":{"replicas":1,"selector":{"k8s-app":"kube-ui","version":"v1"},"template":{"metadata":{"creationTimestamp":null,"labels":{"k8s-app":"kube-ui","kubernetes.io/cluster-service":"true","version":"v1"}},"spec":{"containers":[{"name":"kube-ui","image":"gcr.io/google_containers/kube-ui:v1.1","ports":[{"containerPort":8080,"protocol":"TCP"}],"resources":{"limits":{"cpu":"100m","memory":"50Mi"},"requests":{"cpu":"100m","memory":"50Mi"}},"livenessProbe":{"httpGet":{"path":"/","port":8080,"scheme":"HTTP"},"initialDelaySeconds":30,"timeoutSeconds":5},"terminationMessagePath":"/dev/termination-log","imagePullPolicy":"IfNotPresent"}],"restartPolicy":"Always","terminationGracePeriodSeconds":30,"dnsPolicy":"ClusterFirst"}}},"status":{"replicas":1,"observedGeneration":1}},{"metadata":{"name":"monitoring-heapster-v8","namespace":"kube-system","selfLink":"/api/v1/namespaces/kube-system/replicationcontrollers/monitoring-heapster-v8","uid":"e9614810-8967-11e5-8c9b-0800279dd272","resourceVersion":"49","generation":1,"creationTimestamp":"2015-11-12T18:05:09Z","labels":{"k8s-app":"heapster","kubernetes.io/cluster-service":"true","version":"v8"}},"spec":{"replicas":1,"selector":{"k8s-app":"heapster","version":"v8"},"template":{"metadata":{"creationTimestamp":null,"labels":{"k8s-app":"heapster","kubernetes.io/cluster-service":"true","version":"v8"}},"spec":{"containers":[{"name":"heapster","image":"gcr.io/google_containers/heapster:v0.17.0","command":["/heapster","--source=kubernetes:''''","--sink=influxdb:http://monitoring-influxdb:8086"],"resources":{"limits":{"cpu":"100m","memory":"300Mi"},"requests":{"cpu":"100m","memory":"300Mi"}},"terminationMessagePath":"/dev/termination-log","imagePullPolicy":"IfNotPresent"}],"restartPolicy":"Always","terminationGracePeriodSeconds":30,"dnsPolicy":"ClusterFirst"}}},"status":{"replicas":1,"observedGeneration":1}},{"metadata":{"name":"monitoring-influx-grafana-v1","namespace":"kube-system","selfLink":"/api/v1/namespaces/kube-system/replicationcontrollers/monitoring-influx-grafana-v1","uid":"e9749ef6-8967-11e5-8c9b-0800279dd272","resourceVersion":"62","generation":1,"creationTimestamp":"2015-11-12T18:05:09Z","labels":{"k8s-app":"influxGrafana","kubernetes.io/cluster-service":"true","version":"v1"}},"spec":{"replicas":1,"selector":{"k8s-app":"influxGrafana","version":"v1"},"template":{"metadata":{"creationTimestamp":null,"labels":{"k8s-app":"influxGrafana","kubernetes.io/cluster-service":"true","version":"v1"}},"spec":{"volumes":[{"name":"influxdb-persistent-storage","emptyDir":{}}],"containers":[{"name":"influxdb","image":"gcr.io/google_containers/heapster_influxdb:v0.3","ports":[{"hostPort":8083,"containerPort":8083,"protocol":"TCP"},{"hostPort":8086,"containerPort":8086,"protocol":"TCP"}],"resources":{"limits":{"cpu":"100m","memory":"200Mi"},"requests":{"cpu":"100m","memory":"200Mi"}},"volumeMounts":[{"name":"influxdb-persistent-storage","mountPath":"/data"}],"terminationMessagePath":"/dev/termination-log","imagePullPolicy":"IfNotPresent"},{"name":"grafana","image":"gcr.io/google_containers/heapster_grafana:v0.7","env":[{"name":"INFLUXDB_EXTERNAL_URL","value":"/api/v1/proxy/namespaces/kube-system/services/monitoring-influxdb:api/db/"},{"name":"INFLUXDB_HOST","value":"monitoring-influxdb"},{"name":"INFLUXDB_PORT","value":"8086"}],"resources":{"limits":{"cpu":"100m","memory":"100Mi"},"requests":{"cpu":"100m","memory":"100Mi"}},"terminationMessagePath":"/dev/termination-log","imagePullPolicy":"IfNotPresent"}],"restartPolicy":"Always","terminationGracePeriodSeconds":30,"dnsPolicy":"ClusterFirst"}}},"status":{"replicas":1,"observedGeneration":1}}]}'
161
+ http_version:
162
+ recorded_at: Thu, 12 Nov 2015 19:24:23 GMT
163
+ recorded_with: VCR 2.9.3