diff --git a/kubeclient.gemspec b/kubeclient.gemspec index 29b839a8..7589c5b3 100644 --- a/kubeclient.gemspec +++ b/kubeclient.gemspec @@ -24,7 +24,6 @@ Gem::Specification.new do |spec| spec.add_development_dependency 'minitest' spec.add_development_dependency 'minitest-rg' spec.add_development_dependency 'webmock', '~> 3.0' - spec.add_development_dependency 'vcr' spec.add_development_dependency 'rubocop', '~> 1.3.0' # locked to minor so new cops don't slip in spec.add_development_dependency 'googleauth', '~> 0.5' spec.add_development_dependency('mocha', '~> 1.5') diff --git a/test/cassettes/kubernetes_guestbook.yml b/test/cassettes/kubernetes_guestbook.yml deleted file mode 100644 index 3829add6..00000000 --- a/test/cassettes/kubernetes_guestbook.yml +++ /dev/null @@ -1,879 +0,0 @@ ---- -http_interactions: -- request: - method: delete - uri: http://10.35.0.23:8080/api/v1/namespaces/kubeclient-ns - body: - encoding: US-ASCII - string: '' - headers: - Accept: - - '*/*; q=0.5, application/xml' - Accept-Encoding: - - gzip, deflate - User-Agent: - - Ruby - response: - status: - code: 404 - message: Not Found - headers: - Content-Type: - - application/json - Date: - - Sun, 09 Aug 2015 10:03:59 GMT - Content-Length: - - '253' - body: - encoding: UTF-8 - string: |- - { - "kind": "Status", - "apiVersion": "v1", - "metadata": {}, - "status": "Failure", - "message": "namespaces \"kubeclient-ns\" not found", - "reason": "NotFound", - "details": { - "name": "kubeclient-ns", - "kind": "namespaces" - }, - "code": 404 - } - http_version: - recorded_at: Sun, 09 Aug 2015 10:00:02 GMT -- request: - method: delete - uri: http://10.35.0.23:8080/api/v1/namespaces/kubeclient-ns/services/guestbook - body: - encoding: US-ASCII - string: '' - headers: - Accept: - - '*/*; q=0.5, application/xml' - Accept-Encoding: - - gzip, deflate - User-Agent: - - Ruby - response: - status: - code: 404 - message: Not Found - headers: - Content-Type: - - application/json - Date: - - Sun, 09 Aug 2015 10:03:59 GMT - Content-Length: - - '239' - body: - encoding: UTF-8 - string: |- - { - "kind": "Status", - "apiVersion": "v1", - "metadata": {}, - "status": "Failure", - "message": "service \"guestbook\" not found", - "reason": "NotFound", - "details": { - "name": "guestbook", - "kind": "service" - }, - "code": 404 - } - http_version: - recorded_at: Sun, 09 Aug 2015 10:00:02 GMT -- request: - method: delete - uri: http://10.35.0.23:8080/api/v1/namespaces/kubeclient-ns/services/redis-master - body: - encoding: US-ASCII - string: '' - headers: - Accept: - - '*/*; q=0.5, application/xml' - Accept-Encoding: - - gzip, deflate - User-Agent: - - Ruby - response: - status: - code: 404 - message: Not Found - headers: - Content-Type: - - application/json - Date: - - Sun, 09 Aug 2015 10:03:59 GMT - Content-Length: - - '245' - body: - encoding: UTF-8 - string: |- - { - "kind": "Status", - "apiVersion": "v1", - "metadata": {}, - "status": "Failure", - "message": "service \"redis-master\" not found", - "reason": "NotFound", - "details": { - "name": "redis-master", - "kind": "service" - }, - "code": 404 - } - http_version: - recorded_at: Sun, 09 Aug 2015 10:00:02 GMT -- request: - method: delete - uri: http://10.35.0.23:8080/api/v1/namespaces/kubeclient-ns/services/redis-slave - body: - encoding: US-ASCII - string: '' - headers: - Accept: - - '*/*; q=0.5, application/xml' - Accept-Encoding: - - gzip, deflate - User-Agent: - - Ruby - response: - status: - code: 404 - message: Not Found - headers: - Content-Type: - - application/json - Date: - - Sun, 09 Aug 2015 10:03:59 GMT - Content-Length: - - '243' - body: - encoding: UTF-8 - string: |- - { - "kind": "Status", - "apiVersion": "v1", - "metadata": {}, - "status": "Failure", - "message": "service \"redis-slave\" not found", - "reason": "NotFound", - "details": { - "name": "redis-slave", - "kind": "service" - }, - "code": 404 - } - http_version: - recorded_at: Sun, 09 Aug 2015 10:00:02 GMT -- request: - method: delete - uri: http://10.35.0.23:8080/api/v1/namespaces/kubeclient-ns/replicationcontrollers/guestbook - body: - encoding: US-ASCII - string: '' - headers: - Accept: - - '*/*; q=0.5, application/xml' - Accept-Encoding: - - gzip, deflate - User-Agent: - - Ruby - response: - status: - code: 404 - message: Not Found - headers: - Content-Type: - - application/json - Date: - - Sun, 09 Aug 2015 10:03:59 GMT - Content-Length: - - '269' - body: - encoding: UTF-8 - string: |- - { - "kind": "Status", - "apiVersion": "v1", - "metadata": {}, - "status": "Failure", - "message": "replicationControllers \"guestbook\" not found", - "reason": "NotFound", - "details": { - "name": "guestbook", - "kind": "replicationControllers" - }, - "code": 404 - } - http_version: - recorded_at: Sun, 09 Aug 2015 10:00:02 GMT -- request: - method: delete - uri: http://10.35.0.23:8080/api/v1/namespaces/kubeclient-ns/replicationcontrollers/redis-master - body: - encoding: US-ASCII - string: '' - headers: - Accept: - - '*/*; q=0.5, application/xml' - Accept-Encoding: - - gzip, deflate - User-Agent: - - Ruby - response: - status: - code: 404 - message: Not Found - headers: - Content-Type: - - application/json - Date: - - Sun, 09 Aug 2015 10:03:59 GMT - Content-Length: - - '275' - body: - encoding: UTF-8 - string: |- - { - "kind": "Status", - "apiVersion": "v1", - "metadata": {}, - "status": "Failure", - "message": "replicationControllers \"redis-master\" not found", - "reason": "NotFound", - "details": { - "name": "redis-master", - "kind": "replicationControllers" - }, - "code": 404 - } - http_version: - recorded_at: Sun, 09 Aug 2015 10:00:02 GMT -- request: - method: delete - uri: http://10.35.0.23:8080/api/v1/namespaces/kubeclient-ns/replicationcontrollers/redis-slave - body: - encoding: US-ASCII - string: '' - headers: - Accept: - - '*/*; q=0.5, application/xml' - Accept-Encoding: - - gzip, deflate - User-Agent: - - Ruby - response: - status: - code: 404 - message: Not Found - headers: - Content-Type: - - application/json - Date: - - Sun, 09 Aug 2015 10:03:59 GMT - Content-Length: - - '273' - body: - encoding: UTF-8 - string: |- - { - "kind": "Status", - "apiVersion": "v1", - "metadata": {}, - "status": "Failure", - "message": "replicationControllers \"redis-slave\" not found", - "reason": "NotFound", - "details": { - "name": "redis-slave", - "kind": "replicationControllers" - }, - "code": 404 - } - http_version: - recorded_at: Sun, 09 Aug 2015 10:00:02 GMT -- request: - method: post - uri: http://10.35.0.23:8080/api/v1/namespaces - body: - encoding: UTF-8 - string: '{"metadata":{"name":"kubeclient-ns"},"kind":"Namespace","apiVersion":"v1"}' - headers: - Accept: - - '*/*; q=0.5, application/xml' - Accept-Encoding: - - gzip, deflate - Content-Length: - - '74' - User-Agent: - - Ruby - response: - status: - code: 201 - message: Created - headers: - Content-Type: - - application/json - Date: - - Sun, 09 Aug 2015 10:03:59 GMT - Content-Length: - - '297' - body: - encoding: UTF-8 - string: '{"kind":"Namespace","apiVersion":"v1","metadata":{"name":"kubeclient-ns","selfLink":"/api/v1/namespaces/kubeclient-ns","uid":"f41e6b27-3e7d-11e5-a75a-18037327aaeb","resourceVersion":"534","creationTimestamp":"2015-08-09T10:03:59Z"},"spec":{"finalizers":["kubernetes"]},"status":{"phase":"Active"}}' - http_version: - recorded_at: Sun, 09 Aug 2015 10:00:02 GMT -- request: - method: post - uri: http://10.35.0.23:8080/api/v1/namespaces/kubeclient-ns/services - body: - encoding: UTF-8 - string: '{"metadata":{"namespace":"kubeclient-ns","labels":{"name":"guestbook"},"name":"guestbook"},"spec":{"selector":{"app":"guestbook"},"ports":[{"port":3000,"targetPort":"http-server"}]},"type":"LoadBalancer","kind":"Service","apiVersion":"v1"}' - headers: - Accept: - - '*/*; q=0.5, application/xml' - Accept-Encoding: - - gzip, deflate - Content-Length: - - '239' - User-Agent: - - Ruby - response: - status: - code: 201 - message: Created - headers: - Content-Type: - - application/json - Date: - - Sun, 09 Aug 2015 10:03:59 GMT - Content-Length: - - '521' - body: - encoding: UTF-8 - string: '{"kind":"Service","apiVersion":"v1","metadata":{"name":"guestbook","namespace":"kubeclient-ns","selfLink":"/api/v1/namespaces/kubeclient-ns/services/guestbook","uid":"f42187e1-3e7d-11e5-a75a-18037327aaeb","resourceVersion":"538","creationTimestamp":"2015-08-09T10:03:59Z","labels":{"name":"guestbook"}},"spec":{"ports":[{"protocol":"TCP","port":3000,"targetPort":"http-server","nodePort":0}],"selector":{"app":"guestbook"},"clusterIP":"10.0.0.80","type":"ClusterIP","sessionAffinity":"None"},"status":{"loadBalancer":{}}}' - http_version: - recorded_at: Sun, 09 Aug 2015 10:00:02 GMT -- request: - method: post - uri: http://10.35.0.23:8080/api/v1/namespaces/kubeclient-ns/services - body: - encoding: UTF-8 - string: '{"metadata":{"namespace":"kubeclient-ns","labels":{"app":"redis","role":"master"},"name":"redis-master"},"spec":{"selector":{"app":"redis","role":"master"},"ports":[{"port":6379,"targetPort":"redis-server"}]},"kind":"Service","apiVersion":"v1"}' - headers: - Accept: - - '*/*; q=0.5, application/xml' - Accept-Encoding: - - gzip, deflate - Content-Length: - - '244' - User-Agent: - - Ruby - response: - status: - code: 201 - message: Created - headers: - Content-Type: - - application/json - Date: - - Sun, 09 Aug 2015 10:03:59 GMT - Content-Length: - - '552' - body: - encoding: UTF-8 - string: '{"kind":"Service","apiVersion":"v1","metadata":{"name":"redis-master","namespace":"kubeclient-ns","selfLink":"/api/v1/namespaces/kubeclient-ns/services/redis-master","uid":"f423bf8b-3e7d-11e5-a75a-18037327aaeb","resourceVersion":"542","creationTimestamp":"2015-08-09T10:03:59Z","labels":{"app":"redis","role":"master"}},"spec":{"ports":[{"protocol":"TCP","port":6379,"targetPort":"redis-server","nodePort":0}],"selector":{"app":"redis","role":"master"},"clusterIP":"10.0.0.140","type":"ClusterIP","sessionAffinity":"None"},"status":{"loadBalancer":{}}}' - http_version: - recorded_at: Sun, 09 Aug 2015 10:00:02 GMT -- request: - method: post - uri: http://10.35.0.23:8080/api/v1/namespaces/kubeclient-ns/services - body: - encoding: UTF-8 - string: '{"metadata":{"namespace":"kubeclient-ns","labels":{"app":"redis","role":"slave"},"name":"redis-slave"},"spec":{"selector":{"app":"redis","role":"slave"},"ports":[{"port":6379,"targetPort":"redis-server"}]},"kind":"Service","apiVersion":"v1"}' - headers: - Accept: - - '*/*; q=0.5, application/xml' - Accept-Encoding: - - gzip, deflate - Content-Length: - - '241' - User-Agent: - - Ruby - response: - status: - code: 201 - message: Created - headers: - Content-Type: - - application/json - Date: - - Sun, 09 Aug 2015 10:03:59 GMT - Content-Length: - - '548' - body: - encoding: UTF-8 - string: '{"kind":"Service","apiVersion":"v1","metadata":{"name":"redis-slave","namespace":"kubeclient-ns","selfLink":"/api/v1/namespaces/kubeclient-ns/services/redis-slave","uid":"f4264678-3e7d-11e5-a75a-18037327aaeb","resourceVersion":"545","creationTimestamp":"2015-08-09T10:03:59Z","labels":{"app":"redis","role":"slave"}},"spec":{"ports":[{"protocol":"TCP","port":6379,"targetPort":"redis-server","nodePort":0}],"selector":{"app":"redis","role":"slave"},"clusterIP":"10.0.0.154","type":"ClusterIP","sessionAffinity":"None"},"status":{"loadBalancer":{}}}' - http_version: - recorded_at: Sun, 09 Aug 2015 10:00:02 GMT -- request: - method: post - uri: http://10.35.0.23:8080/api/v1/namespaces/kubeclient-ns/replicationcontrollers - body: - encoding: UTF-8 - string: '{"metadata":{"namespace":"kubeclient-ns","labels":{"app":"guestbook","role":"slave"},"name":"guestbook"},"spec":{"selector":{"app":"guestbook"},"template":{"metadata":{"labels":{"app":"guestbook"}},"spec":{"containers":[{"name":"guestbook","image":"kubernetes/guestbook:v2","ports":[{"name":"http-server","containerPort":3000}]}]}},"replicas":3},"kind":"ReplicationController","apiVersion":"v1"}' - headers: - Accept: - - '*/*; q=0.5, application/xml' - Accept-Encoding: - - gzip, deflate - Content-Length: - - '395' - User-Agent: - - Ruby - response: - status: - code: 201 - message: Created - headers: - Content-Type: - - application/json - Date: - - Sun, 09 Aug 2015 10:03:59 GMT - Content-Length: - - '815' - body: - encoding: UTF-8 - string: '{"kind":"ReplicationController","apiVersion":"v1","metadata":{"name":"guestbook","namespace":"kubeclient-ns","selfLink":"/api/v1/namespaces/kubeclient-ns/replicationcontrollers/guestbook","uid":"f4287784-3e7d-11e5-a75a-18037327aaeb","resourceVersion":"547","generation":1,"creationTimestamp":"2015-08-09T10:03:59Z","labels":{"app":"guestbook","role":"slave"}},"spec":{"replicas":3,"selector":{"app":"guestbook"},"template":{"metadata":{"creationTimestamp":null,"labels":{"app":"guestbook"}},"spec":{"containers":[{"name":"guestbook","image":"kubernetes/guestbook:v2","ports":[{"name":"http-server","containerPort":3000,"protocol":"TCP"}],"resources":{},"terminationMessagePath":"/dev/termination-log","imagePullPolicy":"IfNotPresent"}],"restartPolicy":"Always","dnsPolicy":"ClusterFirst"}}},"status":{"replicas":0}}' - http_version: - recorded_at: Sun, 09 Aug 2015 10:00:02 GMT -- request: - method: post - uri: http://10.35.0.23:8080/api/v1/namespaces/kubeclient-ns/replicationcontrollers - body: - encoding: UTF-8 - string: '{"metadata":{"namespace":"kubeclient-ns","labels":{"app":"redis","role":"master"},"name":"redis-master"},"spec":{"selector":{"app":"redis","role":"master"},"template":{"metadata":{"labels":{"app":"redis","role":"master"}},"spec":{"containers":[{"name":"redis-master","image":"redis","ports":[{"name":"redis-server","containerPort":6379}]}]}},"replicas":1},"kind":"ReplicationController","apiVersion":"v1"}' - headers: - Accept: - - '*/*; q=0.5, application/xml' - Accept-Encoding: - - gzip, deflate - Content-Length: - - '405' - User-Agent: - - Ruby - response: - status: - code: 201 - message: Created - headers: - Content-Type: - - application/json - Date: - - Sun, 09 Aug 2015 10:03:59 GMT - Content-Length: - - '828' - body: - encoding: UTF-8 - string: '{"kind":"ReplicationController","apiVersion":"v1","metadata":{"name":"redis-master","namespace":"kubeclient-ns","selfLink":"/api/v1/namespaces/kubeclient-ns/replicationcontrollers/redis-master","uid":"f42a9800-3e7d-11e5-a75a-18037327aaeb","resourceVersion":"558","generation":1,"creationTimestamp":"2015-08-09T10:03:59Z","labels":{"app":"redis","role":"master"}},"spec":{"replicas":1,"selector":{"app":"redis","role":"master"},"template":{"metadata":{"creationTimestamp":null,"labels":{"app":"redis","role":"master"}},"spec":{"containers":[{"name":"redis-master","image":"redis","ports":[{"name":"redis-server","containerPort":6379,"protocol":"TCP"}],"resources":{},"terminationMessagePath":"/dev/termination-log","imagePullPolicy":"IfNotPresent"}],"restartPolicy":"Always","dnsPolicy":"ClusterFirst"}}},"status":{"replicas":0}}' - http_version: - recorded_at: Sun, 09 Aug 2015 10:00:02 GMT -- request: - method: post - uri: http://10.35.0.23:8080/api/v1/namespaces/kubeclient-ns/replicationcontrollers - body: - encoding: UTF-8 - string: '{"metadata":{"namespace":"kubeclient-ns","labels":{"app":"redis","role":"slave"},"name":"redis-slave"},"spec":{"selector":{"app":"redis","role":"slave"},"template":{"metadata":{"labels":{"app":"redis","role":"slave"}},"spec":{"containers":[{"name":"redis-slave","image":"kubernetes/redis-slave:v2","ports":[{"name":"redis-server","containerPort":6379}]}]}},"replicas":2},"kind":"ReplicationController","apiVersion":"v1"}' - headers: - Accept: - - '*/*; q=0.5, application/xml' - Accept-Encoding: - - gzip, deflate - Content-Length: - - '420' - User-Agent: - - Ruby - response: - status: - code: 201 - message: Created - headers: - Content-Type: - - application/json - Date: - - Sun, 09 Aug 2015 10:03:59 GMT - Content-Length: - - '842' - body: - encoding: UTF-8 - string: '{"kind":"ReplicationController","apiVersion":"v1","metadata":{"name":"redis-slave","namespace":"kubeclient-ns","selfLink":"/api/v1/namespaces/kubeclient-ns/replicationcontrollers/redis-slave","uid":"f42e1d09-3e7d-11e5-a75a-18037327aaeb","resourceVersion":"567","generation":1,"creationTimestamp":"2015-08-09T10:03:59Z","labels":{"app":"redis","role":"slave"}},"spec":{"replicas":2,"selector":{"app":"redis","role":"slave"},"template":{"metadata":{"creationTimestamp":null,"labels":{"app":"redis","role":"slave"}},"spec":{"containers":[{"name":"redis-slave","image":"kubernetes/redis-slave:v2","ports":[{"name":"redis-server","containerPort":6379,"protocol":"TCP"}],"resources":{},"terminationMessagePath":"/dev/termination-log","imagePullPolicy":"IfNotPresent"}],"restartPolicy":"Always","dnsPolicy":"ClusterFirst"}}},"status":{"replicas":0}}' - http_version: - recorded_at: Sun, 09 Aug 2015 10:00:02 GMT -- request: - method: get - uri: http://10.35.0.23:8080/api/v1/namespaces - body: - encoding: US-ASCII - string: '' - headers: - Accept: - - '*/*; q=0.5, application/xml' - Accept-Encoding: - - gzip, deflate - User-Agent: - - Ruby - response: - status: - code: 200 - message: OK - headers: - Content-Type: - - application/json - Date: - - Sun, 09 Aug 2015 10:03:59 GMT - Content-Length: - - '629' - body: - encoding: UTF-8 - string: '{"kind":"NamespaceList","apiVersion":"v1","metadata":{"selfLink":"/api/v1/namespaces","resourceVersion":"570"},"items":[{"metadata":{"name":"default","selfLink":"/api/v1/namespaces/default","uid":"37360c82-3e77-11e5-a75a-18037327aaeb","resourceVersion":"6","creationTimestamp":"2015-08-09T09:15:45Z"},"spec":{"finalizers":["kubernetes"]},"status":{"phase":"Active"}},{"metadata":{"name":"kubeclient-ns","selfLink":"/api/v1/namespaces/kubeclient-ns","uid":"f41e6b27-3e7d-11e5-a75a-18037327aaeb","resourceVersion":"534","creationTimestamp":"2015-08-09T10:03:59Z"},"spec":{"finalizers":["kubernetes"]},"status":{"phase":"Active"}}]}' - http_version: - recorded_at: Sun, 09 Aug 2015 10:00:02 GMT -- request: - method: get - uri: http://10.35.0.23:8080/api/v1/namespaces/kubeclient-ns/services - body: - encoding: US-ASCII - string: '' - headers: - Accept: - - '*/*; q=0.5, application/xml' - Accept-Encoding: - - gzip, deflate - User-Agent: - - Ruby - response: - status: - code: 200 - message: OK - headers: - Content-Type: - - application/json - Date: - - Sun, 09 Aug 2015 10:03:59 GMT - Content-Length: - - '1661' - body: - encoding: UTF-8 - string: '{"kind":"ServiceList","apiVersion":"v1","metadata":{"selfLink":"/api/v1/namespaces/kubeclient-ns/services","resourceVersion":"571"},"items":[{"metadata":{"name":"guestbook","namespace":"kubeclient-ns","selfLink":"/api/v1/namespaces/kubeclient-ns/services/guestbook","uid":"f42187e1-3e7d-11e5-a75a-18037327aaeb","resourceVersion":"538","creationTimestamp":"2015-08-09T10:03:59Z","labels":{"name":"guestbook"}},"spec":{"ports":[{"protocol":"TCP","port":3000,"targetPort":"http-server","nodePort":0}],"selector":{"app":"guestbook"},"clusterIP":"10.0.0.80","type":"ClusterIP","sessionAffinity":"None"},"status":{"loadBalancer":{}}},{"metadata":{"name":"redis-master","namespace":"kubeclient-ns","selfLink":"/api/v1/namespaces/kubeclient-ns/services/redis-master","uid":"f423bf8b-3e7d-11e5-a75a-18037327aaeb","resourceVersion":"542","creationTimestamp":"2015-08-09T10:03:59Z","labels":{"app":"redis","role":"master"}},"spec":{"ports":[{"protocol":"TCP","port":6379,"targetPort":"redis-server","nodePort":0}],"selector":{"app":"redis","role":"master"},"clusterIP":"10.0.0.140","type":"ClusterIP","sessionAffinity":"None"},"status":{"loadBalancer":{}}},{"metadata":{"name":"redis-slave","namespace":"kubeclient-ns","selfLink":"/api/v1/namespaces/kubeclient-ns/services/redis-slave","uid":"f4264678-3e7d-11e5-a75a-18037327aaeb","resourceVersion":"545","creationTimestamp":"2015-08-09T10:03:59Z","labels":{"app":"redis","role":"slave"}},"spec":{"ports":[{"protocol":"TCP","port":6379,"targetPort":"redis-server","nodePort":0}],"selector":{"app":"redis","role":"slave"},"clusterIP":"10.0.0.154","type":"ClusterIP","sessionAffinity":"None"},"status":{"loadBalancer":{}}}]}' - http_version: - recorded_at: Sun, 09 Aug 2015 10:00:02 GMT -- request: - method: get - uri: http://10.35.0.23:8080/api/v1/namespaces/kubeclient-ns/replicationcontrollers - body: - encoding: US-ASCII - string: '' - headers: - Accept: - - '*/*; q=0.5, application/xml' - Accept-Encoding: - - gzip, deflate - User-Agent: - - Ruby - response: - status: - code: 200 - message: OK - headers: - Content-Type: - - application/json - Date: - - Sun, 09 Aug 2015 10:03:59 GMT - Transfer-Encoding: - - chunked - body: - encoding: UTF-8 - string: '{"kind":"ReplicationControllerList","apiVersion":"v1","metadata":{"selfLink":"/api/v1/namespaces/kubeclient-ns/replicationcontrollers","resourceVersion":"571"},"items":[{"metadata":{"name":"guestbook","namespace":"kubeclient-ns","selfLink":"/api/v1/namespaces/kubeclient-ns/replicationcontrollers/guestbook","uid":"f4287784-3e7d-11e5-a75a-18037327aaeb","resourceVersion":"557","generation":1,"creationTimestamp":"2015-08-09T10:03:59Z","labels":{"app":"guestbook","role":"slave"}},"spec":{"replicas":3,"selector":{"app":"guestbook"},"template":{"metadata":{"creationTimestamp":null,"labels":{"app":"guestbook"}},"spec":{"containers":[{"name":"guestbook","image":"kubernetes/guestbook:v2","ports":[{"name":"http-server","containerPort":3000,"protocol":"TCP"}],"resources":{},"terminationMessagePath":"/dev/termination-log","imagePullPolicy":"IfNotPresent"}],"restartPolicy":"Always","dnsPolicy":"ClusterFirst"}}},"status":{"replicas":3,"observedGeneration":1}},{"metadata":{"name":"redis-master","namespace":"kubeclient-ns","selfLink":"/api/v1/namespaces/kubeclient-ns/replicationcontrollers/redis-master","uid":"f42a9800-3e7d-11e5-a75a-18037327aaeb","resourceVersion":"565","generation":1,"creationTimestamp":"2015-08-09T10:03:59Z","labels":{"app":"redis","role":"master"}},"spec":{"replicas":1,"selector":{"app":"redis","role":"master"},"template":{"metadata":{"creationTimestamp":null,"labels":{"app":"redis","role":"master"}},"spec":{"containers":[{"name":"redis-master","image":"redis","ports":[{"name":"redis-server","containerPort":6379,"protocol":"TCP"}],"resources":{},"terminationMessagePath":"/dev/termination-log","imagePullPolicy":"IfNotPresent"}],"restartPolicy":"Always","dnsPolicy":"ClusterFirst"}}},"status":{"replicas":0,"observedGeneration":1}},{"metadata":{"name":"redis-slave","namespace":"kubeclient-ns","selfLink":"/api/v1/namespaces/kubeclient-ns/replicationcontrollers/redis-slave","uid":"f42e1d09-3e7d-11e5-a75a-18037327aaeb","resourceVersion":"567","generation":1,"creationTimestamp":"2015-08-09T10:03:59Z","labels":{"app":"redis","role":"slave"}},"spec":{"replicas":2,"selector":{"app":"redis","role":"slave"},"template":{"metadata":{"creationTimestamp":null,"labels":{"app":"redis","role":"slave"}},"spec":{"containers":[{"name":"redis-slave","image":"kubernetes/redis-slave:v2","ports":[{"name":"redis-server","containerPort":6379,"protocol":"TCP"}],"resources":{},"terminationMessagePath":"/dev/termination-log","imagePullPolicy":"IfNotPresent"}],"restartPolicy":"Always","dnsPolicy":"ClusterFirst"}}},"status":{"replicas":0}}]}' - http_version: - recorded_at: Sun, 09 Aug 2015 10:00:02 GMT -- request: - method: delete - uri: http://10.35.0.23:8080/api/v1/namespaces/kubeclient-ns/services/guestbook - body: - encoding: US-ASCII - string: '' - headers: - Accept: - - '*/*; q=0.5, application/xml' - Accept-Encoding: - - gzip, deflate - User-Agent: - - Ruby - response: - status: - code: 200 - message: OK - headers: - Content-Type: - - application/json - Date: - - Sun, 09 Aug 2015 10:03:59 GMT - Content-Length: - - '100' - body: - encoding: UTF-8 - string: |- - { - "kind": "Status", - "apiVersion": "v1", - "metadata": {}, - "status": "Success", - "code": 200 - } - http_version: - recorded_at: Sun, 09 Aug 2015 10:00:02 GMT -- request: - method: delete - uri: http://10.35.0.23:8080/api/v1/namespaces/kubeclient-ns/services/redis-master - body: - encoding: US-ASCII - string: '' - headers: - Accept: - - '*/*; q=0.5, application/xml' - Accept-Encoding: - - gzip, deflate - User-Agent: - - Ruby - response: - status: - code: 200 - message: OK - headers: - Content-Type: - - application/json - Date: - - Sun, 09 Aug 2015 10:03:59 GMT - Content-Length: - - '100' - body: - encoding: UTF-8 - string: |- - { - "kind": "Status", - "apiVersion": "v1", - "metadata": {}, - "status": "Success", - "code": 200 - } - http_version: - recorded_at: Sun, 09 Aug 2015 10:00:02 GMT -- request: - method: delete - uri: http://10.35.0.23:8080/api/v1/namespaces/kubeclient-ns/services/redis-slave - body: - encoding: US-ASCII - string: '' - headers: - Accept: - - '*/*; q=0.5, application/xml' - Accept-Encoding: - - gzip, deflate - User-Agent: - - Ruby - response: - status: - code: 200 - message: OK - headers: - Content-Type: - - application/json - Date: - - Sun, 09 Aug 2015 10:03:59 GMT - Content-Length: - - '100' - body: - encoding: UTF-8 - string: |- - { - "kind": "Status", - "apiVersion": "v1", - "metadata": {}, - "status": "Success", - "code": 200 - } - http_version: - recorded_at: Sun, 09 Aug 2015 10:00:02 GMT -- request: - method: delete - uri: http://10.35.0.23:8080/api/v1/namespaces/kubeclient-ns/replicationcontrollers/guestbook - body: - encoding: US-ASCII - string: '' - headers: - Accept: - - '*/*; q=0.5, application/xml' - Accept-Encoding: - - gzip, deflate - User-Agent: - - Ruby - response: - status: - code: 200 - message: OK - headers: - Content-Type: - - application/json - Date: - - Sun, 09 Aug 2015 10:03:59 GMT - Content-Length: - - '100' - body: - encoding: UTF-8 - string: |- - { - "kind": "Status", - "apiVersion": "v1", - "metadata": {}, - "status": "Success", - "code": 200 - } - http_version: - recorded_at: Sun, 09 Aug 2015 10:00:02 GMT -- request: - method: delete - uri: http://10.35.0.23:8080/api/v1/namespaces/kubeclient-ns/replicationcontrollers/redis-master - body: - encoding: US-ASCII - string: '' - headers: - Accept: - - '*/*; q=0.5, application/xml' - Accept-Encoding: - - gzip, deflate - User-Agent: - - Ruby - response: - status: - code: 200 - message: OK - headers: - Content-Type: - - application/json - Date: - - Sun, 09 Aug 2015 10:03:59 GMT - Content-Length: - - '100' - body: - encoding: UTF-8 - string: |- - { - "kind": "Status", - "apiVersion": "v1", - "metadata": {}, - "status": "Success", - "code": 200 - } - http_version: - recorded_at: Sun, 09 Aug 2015 10:00:02 GMT -- request: - method: delete - uri: http://10.35.0.23:8080/api/v1/namespaces/kubeclient-ns/replicationcontrollers/redis-slave - body: - encoding: US-ASCII - string: '' - headers: - Accept: - - '*/*; q=0.5, application/xml' - Accept-Encoding: - - gzip, deflate - User-Agent: - - Ruby - response: - status: - code: 200 - message: OK - headers: - Content-Type: - - application/json - Date: - - Sun, 09 Aug 2015 10:03:59 GMT - Content-Length: - - '100' - body: - encoding: UTF-8 - string: |- - { - "kind": "Status", - "apiVersion": "v1", - "metadata": {}, - "status": "Success", - "code": 200 - } - http_version: - recorded_at: Sun, 09 Aug 2015 10:00:02 GMT -- request: - method: delete - uri: http://10.35.0.23:8080/api/v1/namespaces/kubeclient-ns - body: - encoding: US-ASCII - string: '' - headers: - Accept: - - '*/*; q=0.5, application/xml' - Accept-Encoding: - - gzip, deflate - User-Agent: - - Ruby - response: - status: - code: 200 - message: OK - headers: - Content-Type: - - application/json - Date: - - Sun, 09 Aug 2015 10:03:59 GMT - Content-Length: - - '345' - body: - encoding: UTF-8 - string: '{"kind":"Namespace","apiVersion":"v1","metadata":{"name":"kubeclient-ns","selfLink":"/api/v1/namespaces/kubeclient-ns","uid":"f41e6b27-3e7d-11e5-a75a-18037327aaeb","resourceVersion":"584","creationTimestamp":"2015-08-09T10:03:59Z","deletionTimestamp":"2015-08-09T10:03:59Z"},"spec":{"finalizers":["kubernetes"]},"status":{"phase":"Terminating"}}' - http_version: - recorded_at: Sun, 09 Aug 2015 10:00:02 GMT -- request: - method: get - uri: http://10.35.0.23:8080/api/v1 - body: - encoding: US-ASCII - string: '' - headers: - Accept: - - "*/*" - Accept-Encoding: - - gzip, deflate - User-Agent: - - rest-client/2.0.0 (linux-gnu x86_64) ruby/2.3.0p0 - Host: - - localhost:8080 - response: - status: - code: 200 - message: OK - headers: - Content-Type: - - application/json - Date: - - Mon, 29 Aug 2016 15:51:30 GMT - Transfer-Encoding: - - chunked - body: - encoding: UTF-8 - string: '{"kind":"APIResourceList","groupVersion":"v1","resources":[{"name":"bindings","namespaced":true,"kind":"Binding"},{"name":"componentstatuses","namespaced":false,"kind":"ComponentStatus"},{"name":"configmaps","namespaced":true,"kind":"ConfigMap"},{"name":"endpoints","namespaced":true,"kind":"Endpoints"},{"name":"events","namespaced":true,"kind":"Event"},{"name":"limitranges","namespaced":true,"kind":"LimitRange"},{"name":"namespaces","namespaced":false,"kind":"Namespace"},{"name":"namespaces/finalize","namespaced":false,"kind":"Namespace"},{"name":"namespaces/status","namespaced":false,"kind":"Namespace"},{"name":"nodes","namespaced":false,"kind":"Node"},{"name":"nodes/proxy","namespaced":false,"kind":"Node"},{"name":"nodes/status","namespaced":false,"kind":"Node"},{"name":"persistentvolumeclaims","namespaced":true,"kind":"PersistentVolumeClaim"},{"name":"persistentvolumeclaims/status","namespaced":true,"kind":"PersistentVolumeClaim"},{"name":"persistentvolumes","namespaced":false,"kind":"PersistentVolume"},{"name":"persistentvolumes/status","namespaced":false,"kind":"PersistentVolume"},{"name":"pods","namespaced":true,"kind":"Pod"},{"name":"pods/attach","namespaced":true,"kind":"Pod"},{"name":"pods/binding","namespaced":true,"kind":"Binding"},{"name":"pods/exec","namespaced":true,"kind":"Pod"},{"name":"pods/log","namespaced":true,"kind":"Pod"},{"name":"pods/portforward","namespaced":true,"kind":"Pod"},{"name":"pods/proxy","namespaced":true,"kind":"Pod"},{"name":"pods/status","namespaced":true,"kind":"Pod"},{"name":"podtemplates","namespaced":true,"kind":"PodTemplate"},{"name":"replicationcontrollers","namespaced":true,"kind":"ReplicationController"},{"name":"replicationcontrollers/scale","namespaced":true,"kind":"Scale"},{"name":"replicationcontrollers/status","namespaced":true,"kind":"ReplicationController"},{"name":"resourcequotas","namespaced":true,"kind":"ResourceQuota"},{"name":"resourcequotas/status","namespaced":true,"kind":"ResourceQuota"},{"name":"secrets","namespaced":true,"kind":"Secret"},{"name":"serviceaccounts","namespaced":true,"kind":"ServiceAccount"},{"name":"services","namespaced":true,"kind":"Service"},{"name":"services/proxy","namespaced":true,"kind":"Service"},{"name":"services/status","namespaced":true,"kind":"Service"}]} - -' - http_version: - recorded_at: Mon, 29 Aug 2016 15:51:30 GMT -recorded_with: VCR 3.0.3 diff --git a/test/test_guestbook_go.rb b/test/test_guestbook_go.rb deleted file mode 100644 index 3d02fd46..00000000 --- a/test/test_guestbook_go.rb +++ /dev/null @@ -1,233 +0,0 @@ -# frozen_string_literal: true - -require_relative 'test_helper' -require 'vcr' - -# creation of google's example of guest book -class CreateGuestbookGo < MiniTest::Test - def test_create_guestbook_entities - VCR.configure do |c| - c.cassette_library_dir = 'test/cassettes' - c.hook_into(:webmock) - end - - # WebMock.allow_net_connect! - VCR.use_cassette('kubernetes_guestbook') do # , record: :new_episodes) do - client = Kubeclient::Client.new('http://10.35.0.23:8080/api/', 'v1') - - testing_ns = Kubeclient::Resource.new - testing_ns.metadata = {} - testing_ns.metadata.name = 'kubeclient-ns' - - # delete in case they existed before so creation can be tested - delete_namespace(client, testing_ns.metadata.name) - delete_services( - client, testing_ns.metadata.name, - ['guestbook', 'redis-master', 'redis-slave'] - ) - delete_replication_controllers( - client, testing_ns.metadata.name, - ['guestbook', 'redis-master', 'redis-slave'] - ) - - client.create_namespace(testing_ns) - services = create_services(client, testing_ns.metadata.name) - replicators = create_replication_controllers(client, testing_ns.metadata.name) - - get_namespaces(client) - get_services(client, testing_ns.metadata.name) - get_replication_controllers(client, testing_ns.metadata.name) - - delete_services(client, testing_ns.metadata.name, services) - delete_replication_controllers(client, testing_ns.metadata.name, replicators) - - client.delete_namespace(testing_ns.metadata.name) - end - end - - def delete_namespace(client, namespace_name) - client.delete_namespace(namespace_name) - rescue Kubeclient::ResourceNotFoundError => e - assert_equal(404, e.error_code) - end - - def get_namespaces(client) - namespaces = client.get_namespaces - assert(true, namespaces.size > 2) - end - - def get_services(client, ns) - retrieved_services = client.get_services(namespace: ns) - assert_equal(3, retrieved_services.size) - end - - def get_replication_controllers(client, ns) - retrieved_replicators = client.get_replication_controllers(namespace: ns) - assert_equal(3, retrieved_replicators.size) - end - - def create_services(client, ns) - guestbook_service = client.create_service(guestbook_service(ns)) - redis_service = client.create_service(redis_service(ns)) - redis_slave_service = client.create_service(redis_slave_service(ns)) - [guestbook_service, redis_service, redis_slave_service] - end - - def create_replication_controllers(client, namespace) - rc = client.create_replication_controller(guestbook_rc(namespace)) - rc2 = client.create_replication_controller(redis_master_rc(namespace)) - rc3 = client.create_replication_controller(redis_slave_rc(namespace)) - [rc, rc2, rc3] - end - - def delete_services(client, namespace, services) - # if the entity is not found, no need to fail the test - services.each do |service| - if service.instance_of?(Kubeclient::Resource) - client.delete_service(service.metadata.name, namespace) - else - # it's just a string - service name - client.delete_service(service, namespace) - end - rescue Kubeclient::ResourceNotFoundError => e - assert_equal(404, e.error_code) - end - end - - def delete_replication_controllers(client, namespace, replication_controllers) - # if the entity is not found, no need to fail the test - replication_controllers.each do |rc| - if rc.instance_of?(Kubeclient::Resource) - client.delete_replication_controller(rc.metadata.name, namespace) - else - # it's just a string - rc name - client.delete_replication_controller(rc, namespace) - end - rescue Kubeclient::ResourceNotFoundError => e - assert_equal(404, e.error_code) - end - end - - private - - def construct_base_rc(namespace) - rc = Kubeclient::Resource.new - rc.metadata = {} - rc.metadata.namespace = namespace - rc.metadata.labels = {} - rc.spec = {} - rc.spec.selector = {} - rc.spec.template = {} - rc.spec.template.metadata = {} - rc.spec.template.spec = {} - rc.spec.template.metadata.labels = {} - rc - end - - def redis_master_rc(namespace) - rc = construct_base_rc(namespace) - rc.metadata.name = 'redis-master' - rc.metadata.labels.app = 'redis' - rc.metadata.labels.role = 'master' - rc.spec.replicas = 1 - rc.spec.selector.app = 'redis' - rc.spec.selector.role = 'master' - rc.spec.template.metadata.labels.app = 'redis' - rc.spec.template.metadata.labels.role = 'master' - rc.spec.template.spec.containers = [{ - 'name' => 'redis-master', - 'image' => 'redis', - 'ports' => [{ - 'name' => 'redis-server', - 'containerPort' => 6379 - }] - }] - rc - end - - def redis_slave_rc(namespace) - rc = construct_base_rc(namespace) - rc.metadata.name = 'redis-slave' - rc.metadata.labels.app = 'redis' - rc.metadata.labels.role = 'slave' - rc.spec.replicas = 2 - rc.spec.selector.app = 'redis' - rc.spec.selector.role = 'slave' - rc.spec.template.metadata.labels.app = 'redis' - rc.spec.template.metadata.labels.role = 'slave' - rc.spec.template.spec.containers = [{ - 'name' => 'redis-slave', - 'image' => 'kubernetes/redis-slave:v2', - 'ports' => [{ - 'name' => 'redis-server', - 'containerPort' => 6379 - }] - }] - rc - end - - def guestbook_rc(namespace) - rc = construct_base_rc(namespace) - rc.metadata.name = 'guestbook' - rc.metadata.labels.app = 'guestbook' - rc.metadata.labels.role = 'slave' - rc.spec.replicas = 3 - rc.spec.selector.app = 'guestbook' - rc.spec.template.metadata.labels.app = 'guestbook' - rc.spec.template.spec.containers = [ - { - 'name' => 'guestbook', - 'image' => 'kubernetes/guestbook:v2', - 'ports' => [ - { - 'name' => 'http-server', - 'containerPort' => 3000 - } - ] - } - ] - rc - end - - def base_service(namespace) - our_service = Kubeclient::Resource.new - our_service.metadata = {} - our_service.metadata.namespace = namespace - our_service.metadata.labels = {} - our_service.spec = {} - our_service.spec.selector = {} - our_service - end - - def redis_slave_service(namespace) - our_service = base_service(namespace) - our_service.metadata.name = 'redis-slave' - our_service.metadata.labels.app = 'redis' - our_service.metadata.labels.role = 'slave' - our_service.spec.ports = [{ 'port' => 6379, 'targetPort' => 'redis-server' }] - our_service.spec.selector.app = 'redis' - our_service.spec.selector.role = 'slave' - our_service - end - - def redis_service(namespace) - our_service = base_service(namespace) - our_service.metadata.name = 'redis-master' - our_service.metadata.labels.app = 'redis' - our_service.metadata.labels.role = 'master' - our_service.spec.ports = [{ 'port' => 6379, 'targetPort' => 'redis-server' }] - our_service.spec.selector.app = 'redis' - our_service.spec.selector.role = 'master' - our_service - end - - def guestbook_service(namespace) - our_service = base_service(namespace) - our_service.metadata.name = 'guestbook' - our_service.metadata.labels.name = 'guestbook' - our_service.spec.ports = [{ 'port' => 3000, 'targetPort' => 'http-server' }] - our_service.spec.selector.app = 'guestbook' - our_service.type = 'LoadBalancer' - our_service - end -end