Skip to content

Commit

Permalink
Add namespace to wide output (#76)
Browse files Browse the repository at this point in the history
* add namespace to wide output

* update functional tests for namespace output. make tests run on newer versions of kind
  • Loading branch information
Andrew Suderman authored May 19, 2020
1 parent 30ab948 commit abaad7e
Show file tree
Hide file tree
Showing 20 changed files with 83 additions and 29 deletions.
4 changes: 1 addition & 3 deletions .circleci/config.yml
Original file line number Diff line number Diff line change
Expand Up @@ -66,9 +66,7 @@ workflows:
branches:
only: /.*/
- rok8s-scripts/kubernetes_e2e_tests:
name: e2e test kube 1.15.7
kind_node_image: >-
"kindest/node:v1.15.7@sha256:e2df133f80ef633c53c0200114fce2ed5e1f6947477dbc83261a6a921169488d"
name: run functional tests
<<: *e2e_config
- release:
filters:
Expand Down
8 changes: 4 additions & 4 deletions e2e/tests/00_static_files.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -21,7 +21,7 @@ testcases:

- name: helm template show all
steps:
- script: helm template assets/helm3chart | pluto detect -t v1.16.0 -A -
- script: helm template assets/chart | pluto detect -t v1.16.0 -A -
assertions:
- result.code ShouldEqual 3
- result.systemout ShouldContainSubstring "NAME KIND VERSION REPLACEMENT REMOVED DEPRECATED"
Expand All @@ -30,7 +30,7 @@ testcases:

- name: helm template
steps:
- script: helm template assets/helm3chart | pluto detect -
- script: helm template assets/chart | pluto detect -
assertions:
- result.systemout ShouldContainSubstring "NAME KIND VERSION REPLACEMENT REMOVED DEPRECATED"
- result.systemout ShouldContainSubstring "RELEASE-NAME-helm3chart-v1beta1 Deployment extensions/v1beta1 apps/v1 true true"
Expand Down Expand Up @@ -77,5 +77,5 @@ testcases:
- script: pluto detect-files -d assets/ -owide
assertions:
- result.code ShouldEqual 3
- result.systemout ShouldContainSubstring "NAME KIND VERSION REPLACEMENT DEPRECATED DEPRECATED IN REMOVED REMOVED IN"
- result.systemout ShouldContainSubstring "utilities Deployment extensions/v1beta1 apps/v1 true v1.9.0 true v1.16.0"
- result.systemout ShouldContainSubstring "NAME NAMESPACE KIND VERSION REPLACEMENT DEPRECATED DEPRECATED IN REMOVED REMOVED IN"
- result.systemout ShouldContainSubstring "utilities <UNKNOWN> Deployment extensions/v1beta1 apps/v1 true v1.9.0 true v1.16.0"
14 changes: 11 additions & 3 deletions e2e/tests/01_helm-detect-3.yaml
Original file line number Diff line number Diff line change
@@ -1,9 +1,9 @@
version: "2"
name: "Static Code Files (including helm)"
testcases:
- name: install helm chart
- name: install helm3 release secret
steps:
- script: helm install test assets/helm3chart
- script: kubectl apply -f assets/helm3
assertions:
- result.code ShouldEqual 0

Expand Down Expand Up @@ -43,6 +43,14 @@ testcases:
- result.systemout ShouldContainSubstring "test/test-helm3chart-v1beta1 Deployment extensions/v1beta1 apps/v1 true true"
- result.systemout ShouldContainSubstring "test/test-helm3chart Deployment apps/v1 false false"

- name: helm detect -owide
steps:
- script: pluto detect-helm --helm-version=3 -owide -t v1.16.0
assertions:
- result.code ShouldEqual 3
- result.systemout ShouldContainSubstring "NAME NAMESPACE KIND VERSION REPLACEMENT DEPRECATED DEPRECATED IN REMOVED REMOVED IN"
- result.systemout ShouldContainSubstring "test/test-helm3chart-v1beta1 default Deployment extensions/v1beta1 apps/v1 true v1.9.0 true v1.16.0"

- name: cleanup
steps:
- script: helm delete test
- script: kubectl delete -f assets/helm3
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
23 changes: 23 additions & 0 deletions e2e/tests/assets/helm3/secret.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,23 @@
{
"apiVersion": "v1",
"data": {
"release": "SDRzSUFBQUFBQUFDLyt4N1czT3FTcmYyWDdINDNvdHZWeVdaZ0RFeldyVXVoRVRFS0ltb0hQck5XNnZvaGdEYURTdzVLTTZhLzMxWE4zZzJoN24yM0xWdlZxcFNFV2pHcVVjLzR4bHQ1d2NYT2NUak9sem1wUmwzeFlYUlc4eDFmbkJ2NFRMTi9uUzlCTWVsNTNJZFR1UkYvcHB2WFF1M1U0SHZDTTFPNi82bTNlVEZ1L3RyL3E3RDg5d1ZoNTFmZnNYMXNKZXh3ZXdpUmNzd3ljSTQ0anFjR3FXWmczRUR4U1NoZzdnckxzMmNMRSs1RHJkVGNzVkZjZWJSVzhKTlEvR3lSaFo0RFNkSmNJZ2NLcWN4MDRjTldEYVdlUlNGa1U4ZnB4NFZTWnpJVFR1dlVhUGhyWk40bVRWZW5oLysxTHFqeHovKzlmOFhPZlJRaGh1K2x6V1MyRTBiMTljMFNHbmlJSy9oZW05T2pyUEdOVzY4Y2s2UzNORFJ5OGpMdlBRbWpML1JnWDhFSGlaTkZEakw3T3A4UkVqOWlwRDNCNDM0SzllNGpodnpOSTRTSnd2K2VPViszSVNaUjlKLzgvKzVJVjdtdUU3bTNGQ1pQMSs1LzJMV29pQnV2SEpHbUlaWkk4aXlwUFB0bXlCK3YrRnYrQnVoYzgvZjg0MHNidVNwMXlqamZIa1lpbGVPdnIvMTdaSkxOQTdYYi9GeTVTemR4cisyQVdsUW9aMTcvalhpZmw1eHpDdWFJRnZyNk9jNmhmWnVjMWRjNFMzVGFpTDVHK0dHUDV2ZWJxUHZZZEpnd3h0djhiTHh0SXNTZDhVNVNXanNCQlFpdTVQczd3ZzN3aDJUbVpVSjFYemdKalVTeDJqQmRhSWM0eXN1ODBpQ0haWWovejVJOXZybU4rMTUramk1eWRiVTVNb2RialM1OVhYUjROVytIb09KRktDK2xEcW1GcmdLTG1Bb0diUEZ5cmVqaFk4aUk0Y0U1NkNVZUVjeE5tQWl6YUVvWkxiWldxQk4vT1ExMDB4Vk1GSGxsbW1iYXdGWW85d3hXeEVpeGdhVkxReEpMNFNLc1ZEN1FsdU9zdS9EaVZUYVppc0NrKzdDVWRvYlYrN2V2VXk2dVVGNnFXc2FteUhWMVJ4ZzFCemw3SGwvNUw5Wi9KTXFTOSs5a3ZjUjZlVkFuUG5EU0FwY0pkZ3d1V0hYZC9vNmovclo5OHFXOFVWNXJySm00MUdUampOeUlFdnR0MmxjRE9tMXJNZXdxZkZERWhTb09mYmZMT0c3VjNienJmekt6L3FkY2NKc0FXYnIwQzhNK3hwbStoV3RnSkVlT0dacm84cURaeWpxZUthMFMxZFcvU0VHQWV3YkdKV3REYkFHb21OcWVCanBMYVRNdG41aXJ5OFZLQnI3MDBYN1VUZmE0Nmt3bUwxTXhySFRORUpnYWp5VXBRaFlZMzg0RVhMYkZEQnFTb0V0enFpTi9oQVBNRlNNQUltemZFcDZHYkMwbFcxcW1OcXB5a0toS3NrR2lxMlZiZW54eTJUd2ZSaHBLMkNPY2tUdDYydHcxT056U05vTFlGQWI5TFlhU2pzN1VVbm5RRW9nMFZMWDFMRXFEMkpncnJPUnFNVzJOZUNIQkFoUVdUT2IxTENLM2RNNDlsWEZ1R1h5WmVsNXl1czlpOGZqUy80d3ZkYm85L2hGTUE5TVlXTnVKSGNZYWJ4dDZRSXFXd0ZROUJKWTJnWllsYSsycVM5WXJqYjVzTFoxN2lqM1ZUNDl4TVd3MUhjMlA0ZjFaMEY2bWVGeG5mdEdpc1NaNzVpMmI0dnQzRlY2Q1l4R3ZycFlGN2FweTdhNURpRFJNQXEvTXZkZFg2VXhFdlRlY3lnTlhGbktiR3ZodTBwdlNkZW9xZ0RzbGxMbW1DM0JWWXlOcW9BQ2hYUmR6dnlwMGc3QTR5Q0FTaSszUmFOVUgvRlk3ZXVGcWd5d3F2UkUyOFNwYlE1U01MbXQ5V3gvSlFDYk05OFdlN25hZHdOWDBlSWFFemF1MHVOZGErUkQwVDdCZ203MFA4N0Z2aWJhWlRkei8wWk9EVlpIT1RYVmpZRTVtV252NWhWcWdya3E4eGs4c29HdStkWUVtR3RzV3hvZUxsb0JOSTBOVW5wek1KSGFiNU5mdDR2cWNCVWpROG82Y0pXWnIwYlpkL2JiSHdTUXVGaVZnd1FTSFh0eU4wZE5QWEQ3Rko5Tzg2U1ZRT0t5SEZVZnVnbVY2elhUdk1JakNVTkNzWWtQNmU4NytYb1VqK2VJK2JuRFppUWFwVXZ3SEV4YUs5Z2M4Ri9BcndmWU56YXVZcFFUb3h1K0k0djNMQWx2c1JKWVFTVzdKNzNvdmZiemVDYjBMczZMMGw2Z3Nwc056YVBZTTl5ZEVTTUZabThESnEzbnc3eDZzM2gvYUs1OGxmUldTRzR0WFhPQUVXbGh1aDZHQkJkRGtjcWEwWmo1anRtYXc3NnhBSk51NkNoR0NxZmEzRkY2cFN1M2p1WnRxTHduQzdONW92UHlZbDNLRjJaUCtDbitFQUc3U205aFczb3dKTXpYdGhvdUdOYmJZbENvOHNCMExDMXhaU2wyKy9ycU9id3ZSbE8xT1p4Mzg1Rjh1MzZlKzZ2bmg2N3ZLdmUrYTlIY3hZVnJxYjV0U1N1bzRMbHQ2UWtVYjBOV0IzY3gvdlc0VnV0SklMQTVhTnJXWUtISytuaks2Mi9UUlUvVEo5M2IwWU8vb3JiczhxWEt4U2Z1NTlVRjB2Rm40T0hFVzZZM1dZTDN2TU5ycHNWVEtJbU95ZCtwZlEyN3NrUWNjNDNkUGw2QnFaQzVsc2JicGhhRGFldy9oZTI2MXQ3L0pTL29ldS9SK3N2d2pxM2xpVlNBR3Y5c01RaFFOTTdsTUM2b1RSVTI2eGhRdkhwLy9yUGpzVDBCOXNmK2NGR3Y4WHFPRDNDYnZUZHRBb3lpUVFJb2Jzc1NUM0hSTHJ2aXFKVHUxYjVlT3FZd2RVMUFITXYzMVpEbHh6Rm5ZTmVNT3hWUGZ2S0FpTUh3d3A1SUMyQ0N3RFhYdktvd2ZHbXAvWjVnbStzRUVJeUJUSGxhdC9iOTlza1FaNzdiSHdpUWFOWDcxdGpYNXFNNkZpUGZKc2JjdGhobjIwQlJ3T3BqSnRqRUtDRXhlRnBuNnhnU3h6UlMwQi81dGtWcnhUcUJKczNkY1pWdlNwQ2dzaHRUL0hlVkFLdVArdk9zbEdnY0VraVFqNW9TdHN0RkxpOHdVZnM3dk4vS25rT3h4ZHNtemxFcDFiR1hxdGdybUZmN2JnS1ZsVytUR2N0cjVsL0o2cHhBNzIvOTNPY0I3d1BGSUk3WitneVBEK2IxbUp1Q3lFaWh3dGJGaTB1TUVoRk04V0UvL3RPeDFSeTdabXV1UHRnYnRiK2ljNUJBUXhNQUFZa25kOFBoUlBXSDFnbXVIdVRBUUtueTZubGUrV05iUnVySzNYeGM1ekNybFVlYytBTjd6L0JhcjJKd0FhdjJOcDNqUU8ySEFNbUk1UkRMYTRLeldkTWdnT0JiVlZhejQ3aFd2T2ZBenhVaU9IY1YyMWREWXpPY0dCdUtyMmQ2dHZiOXVyNGN5Ris3WnZhVThkTzRPY0MycFdOVnFYSkVyZU51TTk1TzE3QkdjZE8zcmRFMi8wSnZjb1FuUGxSNklUQlhYOFdWK3EvNmFWeE81M3A3YmRBNUZsa1Bkay9YRStVU0ZKL1ZNQTFWZWZDbWhuOGovOGk0dXZhM1dLb1YwQlNvRHNvSk1leVB2cmpHMW9GTmpCU1Z0WHdTWUtqd09STDlvbzdYblZyMVlMa3RyZ1dLajJvMVpyUEY1L3B2cU1xM2ZoM1BqK3IwaHVWd1V5L1E0a0IzdU8vQktPL2U0M1Z2aFhyN2VhWHlhWTBja2lQY3l4M3p2bkMzY1o3SEZWZDlUNFlzclYyenpUTk9lTnIzdmN0QmhBQ1NYZ1RNY1daSGk3c3pyb2sxakNLUTFIWDMzZnlkaVhUdGFEeHNxblVlcmpkZnpNUExjYk0rc3BtdGpVL25yOExrM1J6UWVwUXp6bUVOY21EcHRFWW1zR3dua1BaY1ptdE82L2pGWHVBMG51L1VSRlp6Nm5WTCt4QjIzZC9IenphMU9Xd2F1U3RMUEN3bEFZbXpyK1Z5dEpWaFNMYW9GYTdaNHFkYjMvWnJKd0hoQVE1ZmVHZEl0QktZUFg2THlheW5ZakhjODRtbkQrSzVyekV6dWlhU2kveDYxcHZiWWx1QXUvZ2Z4bTY5K1VpM1NuYWZ3MStYdloyWHMzbjY0ekxucTdZc2lSZGwxNjZYTEQza1pKNTdVenJrZ0FIYWxwUVlCNnNQV0FFUHpOYkdNZHM1S3R2aXlCeGdWM2xjeXlSTElCbmZxWTg2UmNIQ013VU1vL0VUTkEzZU52WEFWUjd2S09ObFZ0ZFo5Z0dTRU5kY3AwZlpPeEgydXFpY2VvVTkrekhyak92cSt2NUtxTWRYWFFSbEt6Z0hDczNFYnQxVnNaMFZaaU1pUnMzVVIxczAyTS9FOXRtc3lxaHRGNFgycTUvSlVObHVnRDUzSHVzVnZZbDNuZnhudHU1bERVWTE0bGNJTEV1NVk3WVdnT3A5c0xjN1VMUnpXVUdseDROcHJVUFpkekRiK0tqeXJuclU5djFPVy96OWpraC9IOGZ0THFBcll0NlJqM1lOTTl0MDhheHZwTENuWWJzNXdQdWR3OG91eHhRQ0lCcGptZ2N6MFpnall2Q0hNZHpKVnRyQU5vWDBZNXVPTzZDdGpQTlZwVFBXOHh4K3NwdndFUm94cE4zRmZBTk1UVUFFODk2TXNUN3M5Y2ZuOGUvcmhXbjJNbmdZbzBncUFJdU5VVHFXM2hxejNTcmoxcFdsZTFWcHNaMEpHSTM5Wi9sSTM0N0JBMnV3MmM4OS9lV1AxdDVwMTNRWWwzb2V6M1UveENlN1VSL1ovN250bzZsNnJsZXBjdU01N0laVkpkcDFjd2swZXhHWXRFcGdTUVVTTWMzSkZsMS85YTdKUTQwZEV1cExKdldmWWhUYjZUbUt3MGx1S2UzVU1iVldOZWZuT1RxTUpOcXBqS0c0VHV6bTRrS2MyTTdyU2F6WmIxWlh3anRWQ1hpMzN6MkwzY2w4aldGendEK0gzZHRSOTB3VzFWUENwbDdZWWp0OURxWFpXRGlScDZ3VGx4ZzVzTFROckQ4b2JESTd5ck5xRExWRDZnTnJmUDZNcmdlbHh6c1BzVDljWGRSZk1NWjR5WmYrQU51bW5rQmliSkFnbFZBYzRQTjRWTHNsdW1qd0YySkY1UWV1NHQrcDh2MmxPSzJxMkZReWptMlhTbUJwaFdzTjVzQWFuZnRWclgwZUNqaUE1dW93bnc3Zk84R094M0tMNndjeW1vNmx4NGUxb05wNTF5aFRtcnRLKy9nZHBWVUF4Wmp1bU4zOGIyS1hmUHB0eGtHOTY3dUpxL2lIUGdXMHE0QVVieVpIdUxDL1AvMk5HUHBPWEZ5bG5RSnJVSDA3RlIzaitzbXpEN0h3cEU3Zjd1TXJIVE43LzQ5UEdjNG50SVkySG96T2pKTWxkZjg1bEI2QkphV3dpVE1hQ3BtY2xGVGxhd1Q4aERCdVMvWkpLWmJxNXVoZE9wUytYM3FyNldBYk82dzgwdVZRZlRtSU5sc3lmNWp5MWJOeFJTSzM5bXpPMGxRUjJKY0wweE9hOVFWYjMyc0NqNkJmMjViSnZvNmhKYVcwOGQvcU9LV01OYnlkMGFqZlpjdGhDZDNIOGYzMHZraE55cVBsVnBVcWc1V09LVEMxRWxnbkplSVVsajZ3NmRMeVozTldmeWsxM2paVmoxL0x5ZmRvejNhRGZROTduMUdBVS9nNG9NbEtlMEZqNDFxRHhPM2pCMXJtYU92dy9wS21jN3piR01Qb0JCcUdrMm9qY2x1bWp6ZGtEdU95bzNabnVpK1VwUGZ0Lzl6MjlTZzgxMXZseHV4T2xRZnYwSWtCUmtwNzQxaDZnU0pHSis0KzNOQ3crUENrM0IzbTFwYVduTFVwdFIwNVloUmJLbWpMNGwyS0Uvc2krVUxaUEtDTDdNdXFTNVRrY0w1d1RROGUvTlZGYXRFZkZLN1Nua054ZGFmMjlJZlppVHlvWUJGUU9VMXRqRWc3Qk5OenFzbnNlSFR4SlJwS0tZSnQ2ZkZ6MkMwdVU1dDI2VDVjOWdVUkl3QUsvaitqVGtoc0M0aG8rQmpiUHFQWEIrK1ZIOVBxZDZoQ3pnNDZIR3hhSGI1elNtMytMbmFkbGVvUDI4SWVBUVRuRkcrT2NXRi8vM2RpNkR0eDRhRzR4b2owK0dxTDQ4aVg0MmUvcVIzbGZ2N25paXNjbkhzcDEvbkJPVzl2WVJSbUpkZjU4Zk9LZThzeHByVG11ZkNXeTlEMXFtTnBJWEY4anc1T2NveGZZaHlpa3V0dzZwc1daeTlMTC9XaWpMdmlsbDRTcDJFV0wrbXp5QStqTmZlemZ2VWx4M2ppb2FXWHBWem4zLys1NHNMSVgzcHBwVCtLNG95ZFcwb3JFN3pJZ2RoenVjNmJnMVB2aWd2aU5LdU9MdEZQWEtjNmdIWHRyUjJTWU84R3g4aWhUQ3R4c29CSnArNWx1UHA0eFowN0U4V3VOL0d3aDdKNFdXbE1ZbmZpb1h3WlpxVWNSNW0zenFyN1M0K2RxWkxqUE1xNGprQnZwSEcrUkY1dGFYcnBwZFJiRmlHcW9oVXZNNjV6eis4T2FjazRUek52cWI1dys0RmRoQ3I1RjBLQmxwNlRlVnduVytiZVZVMDNveHpqbjFkY0ZtTnZ1UjNMUEUxUjRCRm5lK2pyTGNUSEI3NXVBZytUMEkvaXBiZm5wV29walcxTDU0RTFvTG5IdzFKS2dOZ3FFSm41cmhoZ0dFcWhhK0tVNFZVcHJXeFRXOUs2Z3NyYko3V1VabzZDTjJwZkUxRGRscXA5TFFibU9sVVZONFdpNmtPeng5dGlrRUNDMHVvTHdCN3ZXQURYN2RmeGM2V1hnMjQ4VjVVV0JtS1Y4Nm9jckJBeGlHTUZHTWhiYnZTWURFUHBCWkoxUzFYYU9aZ3dMR1krcUgwSm81Qnl6aFllK25HdTk3UzNHZVZqWkVidGZZQ2lrTkU2Wnl5MHFhcm9DWXBHVDBQaUpxNThYLzFWY0FSSnV3VGpPTGVqcEJ5dXFyK082ZWF3T2NCeTJJcEJTY2NHMGNHOWpVdHVDemtjK1dPeG5VRnF0eklJYkRFVFVQMEZObHJGZncwanJZbTY4VjlETWdnY2RxMW4xWFc3ZEV6MDlCU3htSnEyTlVoZzA5aW9qL2hSdDBaUHc0aTJ1QW0ybStPbkljRUxZRDRXY2hqbnJpS3NFR24vSlljdEVZbGFBWlJaVWJVbU5CdUlFNFZ2SGxzdjE5ZlhyOUgvYTB4WTZuWWErek9LMzc2eU4vc2E3VThpZGhyZU92TWkrakg5VmdqUXl4emhOVnFFa2R0cFBPd2t2RWJiazVIc2RDbk52MDRqODlMc2VxLzZldmQybzRFZDZPSHFKR3FEV1hlVEJ0L1lxRU5qcjlraHltclE1VU9uaDZQZkc3YzllbG9aOU42b1l1dnVhMzNPc2pvNWVta29jU0xIOTl4cldIYlljYzdYS0UwOHhKeXA0U1B0TkppYmFZMDV0YVBFeVZBd1BIVDk2MzU5emJQdDdHNFZIazRLL2NISHluOUYvVmREdTRzRnV6Z0NQTzFTV3V5SEhpSHJnWTAvZm00L296aktuRER5bG9jdVhEZmVOL2tqc2NlaTZROHJYRFFEV0NuckhPZkJ3WkNYWFVuc05BNHI0dUZBV2dqU0UyMDdTN01zT1g1eTROcExUQmZCUFg4NklGbkdXWXhpM0dsTTVaZkRoemdzdk1oTDA1ZGxETDBUalZTVDRwMTYzV2pReXRscGZEdTd6WFNmbXJmMEhEZjhYOVpRRjlrTDAvTnJVSFlCdjV3a29jajE5MERySDdENkI2eitBYXQvd09xTFlIWDRMeUJDUmQvWmY1dXcvOTVoLzIvQy9menZBQUFBLy85TmZjQ25mVFFBQUE9PQ=="
},
"kind": "Secret",
"metadata": {
"creationTimestamp": "2020-05-14T16:13:59Z",
"labels": {
"modifiedAt": "1589472839",
"name": "test",
"owner": "helm",
"status": "deployed",
"version": "1"
},
"name": "sh.helm.release.v1.test.v1",
"namespace": "default",
"resourceVersion": "2869",
"selfLink": "/api/v1/namespaces/default/secrets/sh.helm.release.v1.test.v1",
"uid": "f8151892-2b13-4a55-929b-d7b138feeef6"
},
"type": "helm.sh/release.v1"
}
12 changes: 10 additions & 2 deletions pkg/api/output.go
Original file line number Diff line number Diff line change
Expand Up @@ -14,6 +14,7 @@ var padChar = byte(' ')
// Output is a thing that has an apiVersion in it
type Output struct {
Name string `json:"name,omitempty" yaml:"name,omitempty"`
Namespace string `json:"namespace,omitempty" yaml:"namespace,omitempty"`
APIVersion *Version `json:"api,omitempty" yaml:"api,omitempty"`
Deprecated bool `json:"deprecated" yaml:"deprecated"`
Removed bool `json:"removed" yaml:"removed"`
Expand Down Expand Up @@ -117,7 +118,7 @@ func (instance *Instance) tabOut() (*tabwriter.Writer, error) {
}

if instance.OutputFormat == "wide" {
_, _ = fmt.Fprintln(w, "NAME\t KIND\t VERSION\t REPLACEMENT\t DEPRECATED\t DEPRECATED IN\t REMOVED\t REMOVED IN\t")
_, _ = fmt.Fprintln(w, "NAME\t NAMESPACE\t KIND\t VERSION\t REPLACEMENT\t DEPRECATED\t DEPRECATED IN\t REMOVED\t REMOVED IN\t")

for _, output := range instance.Outputs {
kind := output.APIVersion.Kind
Expand All @@ -129,7 +130,14 @@ func (instance *Instance) tabOut() (*tabwriter.Writer, error) {
deprecatedIn := output.APIVersion.DeprecatedIn
removedIn := output.APIVersion.RemovedIn

_, _ = fmt.Fprintf(w, "%s\t %s\t %s\t %s\t %s\t %s\t %s\t %s\t\n", name, kind, version, replacement, deprecated, deprecatedIn, removed, removedIn)
var namespace string
if output.Namespace == "" {
namespace = "<UNKNOWN>"
} else {
namespace = output.Namespace
}

_, _ = fmt.Fprintf(w, "%s\t %s\t %s\t %s\t %s\t %s\t %s\t %s\t %s\t\n", name, namespace, kind, version, replacement, deprecated, deprecatedIn, removed, removedIn)
}

}
Expand Down
16 changes: 9 additions & 7 deletions pkg/api/output_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -21,7 +21,8 @@ import (
)

var testOutput1 = &Output{
Name: "some name one",
Name: "some name one",
Namespace: "pluto-namespace",
APIVersion: &Version{
Name: "apps/v1",
Kind: "Deployment",
Expand Down Expand Up @@ -76,9 +77,9 @@ func ExampleInstance_DisplayOutput_showAll_wide() {
_ = instance.DisplayOutput()

// Output:
// NAME----------- KIND-------- VERSION------------- REPLACEMENT-- DEPRECATED-- DEPRECATED IN-- REMOVED-- REMOVED IN--
// some name one-- Deployment-- apps/v1------------- ------------- false------- --------------- false---- ------------
// some name two-- Deployment-- extensions/v1beta1-- apps/v1------ true-------- v1.9.0--------- true----- v1.16.0-----
// NAME----------- NAMESPACE-------- KIND-------- VERSION------------- REPLACEMENT-- DEPRECATED-- DEPRECATED IN-- REMOVED-- REMOVED IN--
// some name one-- pluto-namespace-- Deployment-- apps/v1------------- ------------- false------- --------------- false---- ------------
// some name two-- <UNKNOWN>-------- Deployment-- extensions/v1beta1-- apps/v1------ true-------- v1.9.0--------- true----- v1.16.0-----
}

func ExampleInstance_DisplayOutput_normal() {
Expand Down Expand Up @@ -111,8 +112,8 @@ func ExampleInstance_DisplayOutput_wide() {
_ = instance.DisplayOutput()

// Output:
// NAME----------- KIND-------- VERSION------------- REPLACEMENT-- DEPRECATED-- DEPRECATED IN-- REMOVED-- REMOVED IN--
// some name two-- Deployment-- extensions/v1beta1-- apps/v1------ true-------- v1.9.0--------- true----- v1.16.0-----
// NAME----------- NAMESPACE-- KIND-------- VERSION------------- REPLACEMENT-- DEPRECATED-- DEPRECATED IN-- REMOVED-- REMOVED IN--
// some name two-- <UNKNOWN>-- Deployment-- extensions/v1beta1-- apps/v1------ true-------- v1.9.0--------- true----- v1.16.0-----
}

func ExampleInstance_DisplayOutput_showAll_json() {
Expand All @@ -128,7 +129,7 @@ func ExampleInstance_DisplayOutput_showAll_json() {
_ = instance.DisplayOutput()

// Output:
// {"items":[{"name":"some name one","api":{"version":"apps/v1","kind":"Deployment","deprecated-in":"","removed-in":"","replacement-api":""},"deprecated":false,"removed":false},{"name":"some name two","api":{"version":"extensions/v1beta1","kind":"Deployment","deprecated-in":"v1.9.0","removed-in":"v1.16.0","replacement-api":"apps/v1"},"deprecated":true,"removed":true}],"show-all":true,"target-version":"v1.16.0"}
// {"items":[{"name":"some name one","namespace":"pluto-namespace","api":{"version":"apps/v1","kind":"Deployment","deprecated-in":"","removed-in":"","replacement-api":""},"deprecated":false,"removed":false},{"name":"some name two","api":{"version":"extensions/v1beta1","kind":"Deployment","deprecated-in":"v1.9.0","removed-in":"v1.16.0","replacement-api":"apps/v1"},"deprecated":true,"removed":true}],"show-all":true,"target-version":"v1.16.0"}
}

func ExampleInstance_DisplayOutput_showAll_yaml() {
Expand All @@ -146,6 +147,7 @@ func ExampleInstance_DisplayOutput_showAll_yaml() {
// Output:
// items:
// - name: some name one
// namespace: pluto-namespace
// api:
// version: apps/v1
// kind: Deployment
Expand Down
4 changes: 3 additions & 1 deletion pkg/api/versions.go
Original file line number Diff line number Diff line change
Expand Up @@ -34,7 +34,8 @@ type Stub struct {

// StubMeta will catch kube resource metadata
type StubMeta struct {
Name string `json:"name" yaml:"name"`
Name string `json:"name" yaml:"name"`
Namespace string `json:"namespace" yaml:"namespace"`
}

// Version is an apiVersion and a flag for deprecation
Expand Down Expand Up @@ -79,6 +80,7 @@ func IsVersioned(data []byte) ([]*Output, error) {
version := checkVersion(stub)
if version != nil {
output.Name = stub.Metadata.Name
output.Namespace = stub.Metadata.Namespace
output.APIVersion = version
} else {
continue
Expand Down
9 changes: 6 additions & 3 deletions pkg/finder/finder_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -26,7 +26,8 @@ var testPath = "testdata"

var deploymentAppsV1Yaml = "testdata/deployment-apps-v1.yaml"
var deploymentAppsV1YamlFile = []*api.Output{{
Name: "utilities",
Name: "utilities",
Namespace: "test-namespaces",
APIVersion: &api.Version{
Name: "apps/v1",
Kind: "Deployment",
Expand All @@ -36,7 +37,8 @@ var deploymentAppsV1YamlFile = []*api.Output{{

var deploymentExtensionsV1Yaml = "testdata/deployment-extensions-v1beta1.yaml"
var deploymentExtensionsV1YamlFile = []*api.Output{{
Name: "utilities",
Name: "utilities",
Namespace: "yaml-namespace",
APIVersion: &api.Version{
Name: "extensions/v1beta1",
Kind: "Deployment",
Expand All @@ -48,7 +50,8 @@ var deploymentExtensionsV1YamlFile = []*api.Output{{

var deploymentExtensionsV1JSON = "testdata/deployment-extensions-v1beta1.json"
var deploymentExtensionsV1JSONFile = []*api.Output{{
Name: "utilities",
Name: "utilities",
Namespace: "json-namespace",
APIVersion: &api.Version{
Name: "extensions/v1beta1",
Kind: "Deployment",
Expand Down
1 change: 1 addition & 0 deletions pkg/finder/testdata/deployment-apps-v1.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,7 @@ apiVersion: apps/v1
kind: Deployment
metadata:
name: utilities
namespace: test-namespaces
labels:
app: utilities
spec:
Expand Down
3 changes: 2 additions & 1 deletion pkg/finder/testdata/deployment-extensions-v1beta1.json
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,8 @@
"labels": {
"app": "utilities"
},
"name": "utilities"
"name": "utilities",
"namespace": "json-namespace"
},
"spec": {
"replicas": 1,
Expand Down
1 change: 1 addition & 0 deletions pkg/finder/testdata/deployment-extensions-v1beta1.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,7 @@ apiVersion: extensions/v1beta1
kind: Deployment
metadata:
name: utilities
namespace: yaml-namespace
labels:
app: utilities
spec:
Expand Down
11 changes: 8 additions & 3 deletions pkg/helm/helm.go
Original file line number Diff line number Diff line change
Expand Up @@ -34,16 +34,20 @@ type Helm struct {
Kube *kube
}

// Release represents a single helm release
type Release struct {
Name string `json:"name"`
Chart *Chart `json:"chart"`
Manifest string `json:"manifest"`
Name string `json:"name"`
Namespace string `json:"namespace"`
Chart *Chart `json:"chart"`
Manifest string `json:"manifest"`
}

// Chart represents a single helm chart
type Chart struct {
Metadata *ChartMeta `json:"metadata"`
}

// ChartMeta is the metadata of a Helm chart
type ChartMeta struct {
Name string `json:"name"`
Version string `json:"version"`
Expand Down Expand Up @@ -142,6 +146,7 @@ func (h *Helm) findVersions() error {
}
for _, out := range outList {
out.Name = release.Name + "/" + out.Name
out.Namespace = release.Namespace
}
h.Outputs = append(h.Outputs, outList...)

Expand Down
Loading

0 comments on commit abaad7e

Please sign in to comment.