Пример #1
0
    def __init__(self, config):
        '''

        Args:
            config (obj): Object of the configuration data

        '''

        # The configuration data passed in will be .kube/config data, so process is accordingly.
        self.api = KubeBase(config)

        # Check the API url
        url = self.api.cluster['server']
        if not re.match('(?:http|https)://', url):
            raise KubeOpenshiftError(
                "OpenShift API URL does not include HTTP or HTTPS")

        # Gather what end-points we will be using
        self.k8s_api = urljoin(url, "api/v1/")
        self.oc_api = urljoin(url, "oapi/v1/")

        # Test the connection before proceeding
        self.api.test_connection(self.k8s_api)
        self.api.test_connection(self.oc_api)

        # Gather the resource names which will be used for the 'kind' API calls
        self.oc_api_resources = self.api.get_resources(self.oc_api)

        # Gather what API groups are available
        # TODO: refactor this (create function in kubebase.py)
        self.k8s_api_resources = {}
        self.k8s_api_resources['v1'] = self.api.get_resources(self.k8s_api)
        self.k8s_apis = urljoin(url, "apis/")

        # Gather the group names from which resource names will be derived
        self.k8s_api_groups = self.api.get_groups(self.k8s_apis)

        for (name, versions) in self.k8s_api_groups:
            for version in versions:
                api = "%s/%s" % (name, version)
                url = urljoin(self.k8s_apis, api)
                self.k8s_api_resources[api] = self.api.get_resources(url)
Пример #2
0
    }],
    "clusters": [{
        "cluster": {
            "server": "http://localhost:8080"
        },
        "name": "dev"
    }],
    "apiVersion": "v1",
    "users": [{
        "name": "default",
        "user": {
            "token": "foobar"
        }
    }]
}
kubebase = KubeBase(config)


def test_get_resources(httpserver):
    content = '{"kind":"APIResourceList","groupVersion":"v1","resources":[{"name":"bindings","namespaced":true,"kind":"Binding"},{"name":"componentstatuses","namespaced":false,"kind":"ComponentStatus"}]}'
    httpserver.serve_content(content, code=200, headers=None)
    kubebase.get_resources(httpserver.url)


def test_get_groups(httpserver):
    content = '{"kind":"APIGroupList","groups":[{"name":"autoscaling","versions":[{"groupVersion":"autoscaling/v1","version":"v1"}],"preferredVersion":{"groupVersion":"autoscaling/v1","version":"v1"},"serverAddressByClientCIDRs":[{"clientCIDR":"0.0.0.0/0","serverAddress":"192.168.1.156:443"}]},{"name":"batch","versions":[{"groupVersion":"batch/v1","version":"v1"}],"preferredVersion":{"groupVersion":"batch/v1","version":"v1"},"serverAddressByClientCIDRs":[{"clientCIDR":"0.0.0.0/0","serverAddress":"192.168.1.156:443"}]},{"name":"extensions","versions":[{"groupVersion":"extensions/v1beta1","version":"v1beta1"}],"preferredVersion":{"groupVersion":"extensions/v1beta1","version":"v1beta1"},"serverAddressByClientCIDRs":[{"clientCIDR":"0.0.0.0/0","serverAddress":"192.168.1.156:443"}]}]}'
    httpserver.serve_content(content, code=200, headers=None)
    kubebase.get_groups(httpserver.url)


def test_connection(httpserver):