Example #1
0
 def list(self, pattern=None, labels=None):
     ls = super(K8sSecret, self).list(labels=labels)
     secrets = list(map(lambda x: Secret(x), ls))
     if pattern is not None:
         secrets = list(filter(lambda x: pattern in x.name, secrets))
     k8s = []
     for x in secrets:
         j = K8sSecret(config=self.config, name=x.name).from_model(m=x)
         k8s.append(j)
     return k8s
Example #2
0
 def create_service_account_api_token(config=None, name=None):
     s = Secret()
     s.name = "{}-token-{}".format(name, str(uuid.uuid4().hex[:5]))
     s.add_annotation(Secret.K8s_ANNOTATION_SERVICE_ACCOUNT_NAME, name)
     s.type = Secret.K8s_TYPE_SERVICE_ACCOUNT
     k8s = K8sSecret(config=config, name=s.name)
     k8s.model = s
     k8s.create()
     return k8s
Example #3
0
    def create_image_pull_secret(config=None,
                                 prefix=None,
                                 name=None,
                                 data=None):
        s = Secret()

        if name is not None:
            s.name = "{0}-docker-{1}".format(name, str(uuid.uuid4().hex[:5]))
        elif name is None and prefix is not None:
            s.name = "{0}-docker-{1}".format(prefix, str(uuid.uuid4().hex[:5]))
        else:
            s.name = "docker-{0}".format(str(uuid.uuid4().hex[:5]))

        s.dockerconfigjson = data
        k8s = K8sSecret(config=config, name=s.name)
        k8s.model = s
        k8s.create()
        return k8s
Example #4
0
 def get(self):
     self.model = Secret(self.get_model())
     return self
Example #5
0
class K8sSecret(K8sObject):
    def __init__(self, config=None, name=None):
        super(K8sSecret, self).__init__(config=config,
                                        obj_type="Secret",
                                        name=name)

    # -------------------------------------------------------------------------------------  override

    def get(self):
        self.model = Secret(self.get_model())
        return self

    def create(self):
        super(K8sSecret, self).create()
        self.get()
        return self

    def update(self):
        super(K8sSecret, self).update()
        self.get()
        return self

    def list(self, pattern=None, labels=None):
        ls = super(K8sSecret, self).list(labels=labels)
        secrets = list(map(lambda x: Secret(x), ls))
        if pattern is not None:
            secrets = list(filter(lambda x: pattern in x.name, secrets))
        k8s = []
        for x in secrets:
            j = K8sSecret(config=self.config, name=x.name).from_model(m=x)
            k8s.append(j)
        return k8s

    # -------------------------------------------------------------------------------------  image pull secrets

    @staticmethod
    def create_image_pull_secret(config=None,
                                 prefix=None,
                                 name=None,
                                 data=None):
        s = Secret()

        if name is not None:
            s.name = "{0}-docker-{1}".format(name, str(uuid.uuid4().hex[:5]))
        elif name is None and prefix is not None:
            s.name = "{0}-docker-{1}".format(prefix, str(uuid.uuid4().hex[:5]))
        else:
            s.name = "docker-{0}".format(str(uuid.uuid4().hex[:5]))

        s.dockerconfigjson = data
        k8s = K8sSecret(config=config, name=s.name)
        k8s.model = s
        k8s.create()
        return k8s

    @staticmethod
    def list_image_pull_secrets(config=None):
        _list = K8sSecret(config=config, name="yo").list()
        secrets = []
        for x in _list:
            if x.type == Secret.K8s_TYPE_DOCKER_CONFIG:
                secrets.append(x)
        return secrets

    @staticmethod
    def image_pull_secret_with_name(config=None, name=None):
        _secrets = K8sSecret.list_image_pull_secrets(config=config)
        _list = list(filter(lambda x: x.name == name, _secrets))
        if len(_list):
            return _list[0]
        return None

    # -------------------------------------------------------------------------------------  service accounts

    @staticmethod
    def create_service_account_api_token(config=None, name=None):
        s = Secret()
        s.name = "{}-token-{}".format(name, str(uuid.uuid4().hex[:5]))
        s.add_annotation(Secret.K8s_ANNOTATION_SERVICE_ACCOUNT_NAME, name)
        s.type = Secret.K8s_TYPE_SERVICE_ACCOUNT
        k8s = K8sSecret(config=config, name=s.name)
        k8s.model = s
        k8s.create()
        return k8s

    @staticmethod
    def api_tokens_for_service_account(config=None, name=None):
        _list = K8sSecret(config=config, name="yo").list()
        _tokens = []
        for x in _list:
            if x.type == Secret.K8s_TYPE_SERVICE_ACCOUNT:
                if x.annotations[
                        Secret.K8s_ANNOTATION_SERVICE_ACCOUNT_NAME] == name:
                    _tokens.append(x)
        return _tokens

    # ------------------------------------------------------------------------------------- data

    @property
    def data(self):
        return self.model.data

    @data.setter
    def data(self, data=None):
        self.model.data = data

    # ------------------------------------------------------------------------------------- type

    @property
    def type(self):
        return self.model.type

    @type.setter
    def type(self, t=None):
        self.model.type = t

    # ------------------------------------------------------------------------------------- dockerconfigjson

    @property
    def dockerconfigjson(self):
        data = None
        if self.model.dockerconfigjson is not None:
            data = json.loads(self.model.dockerconfigjson)
        return data

    @dockerconfigjson.setter
    def dockerconfigjson(self, secret=None):
        self.model.dockerconfigjson = secret

    # ------------------------------------------------------------------------------------- set

    def set_service_account_token(self,
                                  account_name=None,
                                  account_uid=None,
                                  token=None,
                                  kubecfg_data=None,
                                  cacert=None):
        self.model.set_service_account_token(account_name=account_name,
                                             account_uid=account_uid,
                                             token=token,
                                             kubecfg_data=kubecfg_data,
                                             cacert=cacert)
        return self