示例#1
0
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
}
示例#2
0
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
}
示例#3
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)
	}
}
示例#4
0
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
}
示例#5
0
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
}
示例#6
0
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, ""
}