|
- package huawei
-
- import (
- "time"
-
- corev1 "k8s.io/api/core/v1"
- metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
- "k8s.io/apimachinery/pkg/util/wait"
- "k8s.io/client-go/kubernetes"
- )
-
- const (
- namespace = "test-k8s-client-namespace"
- )
-
- // CreateNamespace 创建命名空间
- // API参考:https://support.huaweicloud.com/api-cci/createCoreV1Namespace.html
- func CreateNamespace(cs *kubernetes.Clientset) (*corev1.Namespace, error) {
- namespace := &corev1.Namespace{
- TypeMeta: metav1.TypeMeta{},
- ObjectMeta: metav1.ObjectMeta{
- Name: namespace,
- Annotations: map[string]string{
- "namespace.kubernetes.io/flavor": "general-computing",
- "network.cci.io/warm-pool-size": "10",
- },
- Labels: map[string]string{
- "rbac.authorization.cci.io/enable-k8s-rbac": "false",
- },
- },
- }
- return cs.CoreV1().Namespaces().Create(namespace)
- }
-
- // DeleteNamespace 删除Namespace
- // API参考:https://support.huaweicloud.com/api-cci/deleteCoreV1Namespace.html
- func DeleteNamespace(cs *kubernetes.Clientset) error {
- return cs.CoreV1().Namespaces().Delete(namespace, &metav1.DeleteOptions{})
- }
-
- // WaitNamespaceActive 查询Namespace状态,等待其状态变为"Active"
- // API参考:https://support.huaweicloud.com/api-cci/readCoreV1Namespace.html
- func WaitNamespaceActive(cs *kubernetes.Clientset) error {
- return wait.Poll(time.Second*5, time.Second*30, func() (done bool, err error) {
- ns, err := cs.CoreV1().Namespaces().Get(namespace, metav1.GetOptions{})
- if err != nil {
- return false, err
- }
- if ns.Status.Phase == corev1.NamespaceActive {
- return true, nil
- }
- return false, nil
- })
- }
|