message: document how to set the status object - fixes
diff: @@ -41,20 +41,67 @@ where
  /// Status subresource
  ///
  /// https://kubernetes.io/docs/tasks/access-kubernetes-api/custom-resources/custom-resource-definitions/#status-subresource
  +/// TODO: Replace examples with owned custom resources. Bad practice to write to owned objects
  +/// These examples work, but the job controller will totally overwrite what we do.
  impl<K> Api<K>
  where
  K: Clone + DeserializeOwned,
  {
  + /// Get the named resource with a status subresource
  + ///
  + /// This actually returns the whole K, with metadata, and spec.
  pub async fn get_status(&self, name: &str) -> Result<K> {
  let req = self.api.get_status(name)?;
  self.client.request::<K>(req).await
  }
  + /// Patch fields on the status object
  + ///
  + /// NB: Requires that the resource has a status subresource.
  + ///
  + /// ```no_run
  + /// use kube::{api::{Api, PatchParams}, config, client::APIClient};
  + /// use k8s_openapi::api::batch::v1::Job;
  + /// #[tokio::main]
  + /// async fn main() -> Result<(), kube::Error> {
  + /// let client = APIClient::new(config::load_kube_config().await?);
  + /// let jobs: Api<Job> = Api::namespaced(client, "apps");
  + /// let mut j = jobs.get("baz").await?;
  + /// let pp = PatchParams::default(); // json merge patch
  + /// let data = serde_json::json!({
  + /// "status": {
  + /// "succeeded": 2
  + /// }
  + /// });
  + /// let o = jobs.patch_status("baz", &pp, serde_json::to_vec(&data)?).await?;
  + /// assert_eq!(o.status.unwrap().succeeded, Some(2));
  + /// Ok(())
  + /// }
  + /// ```
  pub async fn patch_status(&self, name: &str, pp: &PatchParams, patch: Vec<u8>) -> Result<K> {
  let req = self.api.patch_status(name, &pp, patch)?;
  self.client.request::<K>(req).await
  }
  + /// Replace every field on the status object
  + ///
  + /// This works similarly to the `Api::replace` method, but .spec is ignored.
  + /// You can leave out the .spec entirely from the serialized output.
  + ///
  + /// ```no_run
  + /// use kube::{api::{Api, PostParams}, config, client::APIClient};
  + /// use k8s_openapi::api::batch::v1::{Job, JobStatus};
  + /// #[tokio::main]
  + /// async fn main() -> Result<(), kube::Error> {
  + /// let client = APIClient::new(config::load_kube_config().await?);
  + /// let jobs: Api<Job> = Api::namespaced(client, "apps");
  + /// let mut o = jobs.get_status("baz").await?; // retrieve partial object
  + /// o.status = Some(JobStatus::default()); // update the job part
  + /// let pp = PostParams::default();
  + /// let o = jobs.replace_status("baz", &pp, serde_json::to_vec(&o)?).await?;
  + /// Ok(())
  + /// }
  + /// ```
  pub async fn replace_status(&self, name: &str, pp: &PostParams, data: Vec<u8>) -> Result<K> {
  let req = self.api.replace_status(name, &pp, data)?;
  self.client.request::<K>(req).await
  