{"action":"created","issue":{"url":"https://api.github.com/repos/GoogleCloudPlatform/kubernetes/issues/12413","labels_url":"https://api.github.com/repos/GoogleCloudPlatform/kubernetes/issues/12413/labels{/name}","comments_url":"https://api.github.com/repos/GoogleCloudPlatform/kubernetes/issues/12413/comments","events_url":"https://api.github.com/repos/GoogleCloudPlatform/kubernetes/issues/12413/events","html_url":"https://github.com/GoogleCloudPlatform/kubernetes/issues/12413","id":99709554,"number":12413,"title":"[WIP] Make expapi an API group","user":{"login":"caesarxuchao","id":2823529,"avatar_url":"https://avatars.githubusercontent.com/u/2823529?v=3","gravatar_id":"","url":"https://api.github.com/users/caesarxuchao","html_url":"https://github.com/caesarxuchao","followers_url":"https://api.github.com/users/caesarxuchao/followers","following_url":"https://api.github.com/users/caesarxuchao/following{/other_user}","gists_url":"https://api.github.com/users/caesarxuchao/gists{/gist_id}","starred_url":"https://api.github.com/users/caesarxuchao/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/caesarxuchao/subscriptions","organizations_url":"https://api.github.com/users/caesarxuchao/orgs","repos_url":"https://api.github.com/users/caesarxuchao/repos","events_url":"https://api.github.com/users/caesarxuchao/events{/privacy}","received_events_url":"https://api.github.com/users/caesarxuchao/received_events","type":"User","site_admin":false},"labels":[{"url":"https://api.github.com/repos/GoogleCloudPlatform/kubernetes/labels/kind/design","name":"kind/design","color":"c7def8"},{"url":"https://api.github.com/repos/GoogleCloudPlatform/kubernetes/labels/team/api","name":"team/api","color":"d2b48c"}],"state":"open","locked":false,"assignee":{"login":"caesarxuchao","id":2823529,"avatar_url":"https://avatars.githubusercontent.com/u/2823529?v=3","gravatar_id":"","url":"https://api.github.com/users/caesarxuchao","html_url":"https://github.com/caesarxuchao","followers_url":"https://api.github.com/users/caesarxuchao/followers","following_url":"https://api.github.com/users/caesarxuchao/following{/other_user}","gists_url":"https://api.github.com/users/caesarxuchao/gists{/gist_id}","starred_url":"https://api.github.com/users/caesarxuchao/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/caesarxuchao/subscriptions","organizations_url":"https://api.github.com/users/caesarxuchao/orgs","repos_url":"https://api.github.com/users/caesarxuchao/repos","events_url":"https://api.github.com/users/caesarxuchao/events{/privacy}","received_events_url":"https://api.github.com/users/caesarxuchao/received_events","type":"User","site_admin":false},"milestone":null,"comments":1,"created_at":"2015-08-07T19:07:57Z","updated_at":"2015-08-10T00:58:21Z","closed_at":null,"body":"#12001 introduce the experimental api prefix, but it's not introduced as an API group and it thus has to share the version with the official API (i.e., v1).\r\n\r\nAs suggested in https://github.com/GoogleCloudPlatform/kubernetes/issues/10009#issuecomment-122135884, we can make API group part of the API version to expedite its prototyping.\r\n\r\nHere is a laundry list of works required to refactor expapi as an API group, the list is short for now, but I expect it to grow along the way:\r\n1. changing the versions in registered.RegisteredVersions to \"group/version\" and plumbing the changes\r\n2. fixing the code that assume api version doesn't contain \"/\"  ([example](https://github.com/GoogleCloudPlatform/kubernetes/blob/master/pkg/api/ref.go#L82))\r\n3. fixing the TODOs that depend on expapi to be an API group ([example](https://github.com/GoogleCloudPlatform/kubernetes/pull/12405/files#diff-9765b963cad9ecc6ef9416a1f15ded86R337))\r\n\r\n@bgrant0607 @uluyol @nikhiljindal"},"comment":{"url":"https://api.github.com/repos/GoogleCloudPlatform/kubernetes/issues/comments/129265439","html_url":"https://github.com/GoogleCloudPlatform/kubernetes/issues/12413#issuecomment-129265439","issue_url":"https://api.github.com/repos/GoogleCloudPlatform/kubernetes/issues/12413","id":129265439,"user":{"login":"caesarxuchao","id":2823529,"avatar_url":"https://avatars.githubusercontent.com/u/2823529?v=3","gravatar_id":"","url":"https://api.github.com/users/caesarxuchao","html_url":"https://github.com/caesarxuchao","followers_url":"https://api.github.com/users/caesarxuchao/followers","following_url":"https://api.github.com/users/caesarxuchao/following{/other_user}","gists_url":"https://api.github.com/users/caesarxuchao/gists{/gist_id}","starred_url":"https://api.github.com/users/caesarxuchao/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/caesarxuchao/subscriptions","organizations_url":"https://api.github.com/users/caesarxuchao/orgs","repos_url":"https://api.github.com/users/caesarxuchao/repos","events_url":"https://api.github.com/users/caesarxuchao/events{/privacy}","received_events_url":"https://api.github.com/users/caesarxuchao/received_events","type":"User","site_admin":false},"created_at":"2015-08-10T00:58:21Z","updated_at":"2015-08-10T00:58:21Z","body":"I have refactored expapi to use groupVersion=\"expapi/v1alpha1\". I didn't change the field name \"apiVersion\" in TypeMeta, so in a JSON config file, one would write \"apiVersion\": \"expapi/v1alpha1\".\r\n\r\nI didn't change anything for api/v1, so people would still write \"apiVersion\": \"v1\" for a api/v1 object.\r\n\r\nMoving forward, we need to test the groupVersion design on api/v1 objects (where I expect we will meet many problems), but the changes should not affect the end-users, i.e., an end-user should still write \"apiVersion\": \"v1\" in the config file. Here is what I propose:\r\n1. internally, we use groupVersion \"api/v1\". For example, we register \"api/v1\" in registered.RegisteredVersions, rather than \"v1\".\r\n2. treating \"v1\" as an alias of \"api/v1\". This may require special care to be taken for \"v1\" in many places.\r\nComments are more than welcome."}}