func validateConsoleDeploymentConfig(c *oclient.Client, f *cmdutil.Factory) (Result, error) { ns, _, err := f.DefaultNamespace() if err != nil { return Failure, err } rc, err := c.DeploymentConfigs(ns).Get("fabric8") if rc != nil { return Success, err } return Failure, err }
func isDeploymentConfigAvailable(c *oclient.Client, ns string, name string) bool { deployment, err := c.DeploymentConfigs(ns).Get(name) if err != nil { return false } if deployment.Status.Replicas == 0 { return false } replicas := deployment.Status.Replicas available := deployment.Status.AvailableReplicas unavailable := deployment.Status.UnavailableReplicas return unavailable == 0 && available > 0 && replicas > 0 }
func waitForDeploymentConfig(c *oclient.Client, ns string, name string, sleepMillis time.Duration) error { util.Infof("DeploymentConfig %s in namespace %s waiting for it to be ready...\n", name, ns) for { deployment, err := c.DeploymentConfigs(ns).Get(name) if err != nil { util.Warnf("Cannot find DeploymentConfig %s in namepsace %s due to %s\n", name, ns, err) return err } if deployment.Status.Replicas == 0 { util.Warnf("No replicas for DeploymentConfig %s in namespace %s\n", name, ns) } available := deployment.Status.AvailableReplicas unavailable := deployment.Status.UnavailableReplicas if unavailable == 0 && available > 0 { util.Infof("DeploymentConfig %s now has %d available replicas\n", name, available) return nil } //util.Infof("DeploymentConfig %s has %d available replicas and %d unavailable\n", name, available, unavailable) time.Sleep(sleepMillis) } }
func waitForDeploymentConfigs(c *oclient.Client, ns string, waitAll bool, names []string, sleepMillis time.Duration) error { if waitAll { deployments, err := c.DeploymentConfigs(ns).List(api.ListOptions{}) if err != nil { return err } for _, deployment := range deployments.Items { name := deployment.Name err = waitForDeploymentConfig(c, ns, name, sleepMillis) if err != nil { return err } } } else { for _, name := range names { err := waitForDeploymentConfig(c, ns, name, sleepMillis) if err != nil { return err } } } return nil }
func watchAndWaitForDeploymentConfig(c *oclient.Client, ns string, name string, timeout time.Duration) error { if isDeploymentConfigAvailable(c, ns, name) { return nil } w, err := c.DeploymentConfigs(ns).Watch(api.ListOptions{}) if err != nil { return err } _, err = watch.Until(timeout, w, func(e watch.Event) (bool, error) { if e.Type == watch.Error { return false, fmt.Errorf("encountered error while watching DeploymentConfigs: %v", e.Object) } obj, isDC := e.Object.(*deployapi.DeploymentConfig) if !isDC { return false, fmt.Errorf("received unknown object while watching for DeploymentConfigs: %v", obj) } deployment := obj if deployment.Name == name { replicas := deployment.Status.Replicas available := deployment.Status.AvailableReplicas unavailable := deployment.Status.UnavailableReplicas if unavailable == 0 && available > 0 { util.Infof("DeploymentConfig %s now has %d available replicas\n", name, available) return true, nil } else { util.Infof("DeploymentConfig %s has %d replicas, %d available and %d unavailable\n", name, replicas, available, unavailable) } } return false, nil }) if err != nil { return err } return nil }
func ValidationApplicationItemName(namespace string, items applicationapi.ItemList, oClient *oclient.Client, kClient *kclient.Client) (bool, string) { for _, item := range items { switch item.Kind { case "ServiceBroker": if _, err := oClient.ServiceBrokers().Get(item.Name); err != nil { if kerrors.IsNotFound(err) { return false, fmt.Sprintf("resource %s=%s no found.", item.Kind, item.Name) } } case "BackingServiceInstance": if _, err := oClient.BackingServiceInstances(namespace).Get(item.Name); err != nil { if kerrors.IsNotFound(err) { return false, fmt.Sprintf("resource %s=%s no found.", item.Kind, item.Name) } } case "Build": if _, err := oClient.Builds(namespace).Get(item.Name); err != nil { if kerrors.IsNotFound(err) { return false, fmt.Sprintf("resource %s=%s no found.", item.Kind, item.Name) } } case "BuildConfig": if _, err := oClient.BuildConfigs(namespace).Get(item.Name); err != nil { if kerrors.IsNotFound(err) { return false, fmt.Sprintf("resource %s=%s no found.", item.Kind, item.Name) } } case "DeploymentConfig": if _, err := oClient.DeploymentConfigs(namespace).Get(item.Name); err != nil { if kerrors.IsNotFound(err) { return false, fmt.Sprintf("resource %s=%s no found.", item.Kind, item.Name) } } case "ImageStream": if _, err := oClient.ImageStreams(namespace).Get(item.Name); err != nil { if kerrors.IsNotFound(err) { return false, fmt.Sprintf("resource %s=%s no found.", item.Kind, item.Name) } } case "ReplicationController": if _, err := kClient.ReplicationControllers(namespace).Get(item.Name); err != nil { if kerrors.IsNotFound(err) { return false, fmt.Sprintf("resource %s=%s no found.", item.Kind, item.Name) } } case "Node": if _, err := kClient.Nodes().Get(item.Name); err != nil { if kerrors.IsNotFound(err) { return false, fmt.Sprintf("resource %s=%s no found.", item.Kind, item.Name) } } case "Pod": if _, err := kClient.Pods(namespace).Get(item.Name); err != nil { if kerrors.IsNotFound(err) { return false, fmt.Sprintf("resource %s=%s no found.", item.Kind, item.Name) } } case "Service": if _, err := kClient.Services(namespace).Get(item.Name); err != nil { if kerrors.IsNotFound(err) { return false, fmt.Sprintf("resource %s=%s no found.", item.Kind, item.Name) } } } } return true, "" }