Ejemplo n.º 1
0
    def test_id_generation(self, provisioner):
        provisioner.save(check_status=False)

        empty = Cluster(provisioner._object_namespace,
                        name='test',
                        provisioner=provisioner)
        empty.save()
Ejemplo n.º 2
0
    def __init__(self, test_provisioner=None, test_user=None):
        test_user = test_user if test_user is not None else UserFixture()

        if not test_provisioner:
            test_provisioner = ProvisionerFixture(test_user=test_user)
        self.test_provisioner = test_provisioner

        owner = test_user.obj
        provisioner = self.test_provisioner.obj

        provisioner.state = config.get('PROVISIONER_OK_STATE')
        provisioner.save(check_status=False)

        _uuid = uuid.uuid4()
        create_kwargs = {
            'id': _uuid,
            'name': 'Name for cluster {}'.format(_uuid),
            'provisioner': provisioner,
            'state': config.get('CLUSTER_UNKNOWN_STATE'),
            'kubeconfig': yaml.load(open('kubeconfig_localhost', 'r').read()),
            'created_at': datetime.datetime.utcnow().replace(microsecond=0),
            'owner': owner,
            'metadata': {}
        }
        self.obj = Cluster.create(owner.namespace, **create_kwargs)
Ejemplo n.º 3
0
    def test_create_over_api(self):
        """Verify Cluster is created over API and kubeconfig is set"""

        url = url_for('api.cluster_list')
        data = self.create_kwargs_cluster
        data['provisioner'] = 'Provisioner:{}'.format(data['provisioner'].id)
        data['owner'] = 'User:{}'.format(data['owner'].id)

        # create
        response = self.client.post(url,
                                    data=json.dumps(data),
                                    headers=self.auth_header,
                                    content_type='application/json')

        assert response.status_code == 200

        # load
        cluster_id = response.json['id']
        obj = Cluster.load(self.namespace, cluster_id)
        validation, _ = obj.validate()
        assert validation

        # check parameters
        assert obj.kubeconfig == data['kubeconfig']

        return obj
Ejemplo n.º 4
0
def cluster():
    create_kwargs = {
        'name': 'mycluster',
        'provisioner': 'Jenkins',
        'state': 'failed',
    }
    return Cluster.create(**create_kwargs)
Ejemplo n.º 5
0
    def test_list_without_objects(self, cluster):
        cluster.save()

        loaded = Cluster.list(cluster._object_namespace, return_objects=False)
        assert str(cluster.id) in loaded
        for o_name, o in loaded.items():
            assert o is None
Ejemplo n.º 6
0
    def test_load(self, cluster):
        get_id = cluster.id
        cluster.save()

        loaded = Cluster.load(get_id)
        assert loaded == cluster
        assert hasattr(loaded, '_key'), 'Loaded object is missing _key'
Ejemplo n.º 7
0
    def setup(self):
        _user = user()
        create_kwargs_provisioner = {
            'name': 'Testing manual',
            'engine': 'kqueen.engines.ManualEngine',
            'parameters': PROVISIONER_PARAMETERS,
            'owner': _user
        }

        prov = Provisioner(_user.namespace, **create_kwargs_provisioner)
        prov.save(check_status=False)

        self.create_kwargs_cluster = {
            'name': 'Testing cluster for manual provisioner',
            'provisioner': prov,
            'state': 'deployed',
            'kubeconfig': KUBECONFIG,
            'metadata': CLUSTER_METADATA,
            'owner': _user
        }

        self.cluster = Cluster.create(_user.namespace,
                                      **self.create_kwargs_cluster)
        self.engine = ManualEngine(cluster=self.cluster)

        # client setup
        self.auth_header = auth_header(self.client)
        self.namespace = self.auth_header['X-Test-Namespace']
Ejemplo n.º 8
0
    def test_load(self, cluster):
        cluster.save()

        get_id = cluster.id

        loaded = Cluster.load(cluster._object_namespace, get_id)
        assert loaded.get_dict(True) == cluster.get_dict(True)
        assert hasattr(loaded, '_key'), 'Loaded object is missing _key'
Ejemplo n.º 9
0
    def cluster(self):
        _uuid = uuid.uuid4()
        create_kwargs = {
            'name': 'mycluster',
            'color': 'red',
            'id': _uuid,
        }

        return Cluster.create(**create_kwargs)
Ejemplo n.º 10
0
def cluster_list():
    # TODO: implement native serialization

    output = []

    for cluster in list(Cluster.list(return_objects=True).values()):
        output.append(cluster.get_dict())

    return jsonify(output)
Ejemplo n.º 11
0
def cluster_detail(cluster_id):

    # read uuid
    try:
        object_id = UUID(cluster_id, version=4)
    except ValueError:
        abort(404)

    # load object
    try:
        obj = Cluster.load(object_id)
    except NameError:
        abort(404)

    return jsonify(obj.get_dict())
Ejemplo n.º 12
0
    def setup(self):
        create_kwargs_provisioner = {
            'name': 'Testing manual',
            'engine': 'kqueen.engines.ManualEngine'
        }

        prov = Provisioner(**create_kwargs_provisioner)
        prov.save(check_status=False)

        create_kwargs_cluster = {
            'name': 'Testing cluster for manual provisioner',
            'provisioner': prov,
            'state': 'deployed',
            'kubeconfig': yaml.load(open('kubeconfig_localhost', 'r').read()),
        }

        self.cluster = Cluster.create(**create_kwargs_cluster)
        self.engine = ManualEngine(cluster=self.cluster)
Ejemplo n.º 13
0
def cluster():
    """Create cluster with manual provisioner."""
    _uuid = uuid.uuid4()

    prov = Provisioner(
        name='Fixtured provisioner',
        engine='kqueen.engines.ManualEngine',
    )
    prov.save(check_status=False)

    create_kwargs = {
        'id': _uuid,
        'name': 'Name for cluster {}'.format(_uuid),
        'provisioner': prov,
        'state': 'deployed',
        'kubeconfig': yaml.load(open('kubeconfig_localhost', 'r').read()),
    }

    return Cluster.create(**create_kwargs)
Ejemplo n.º 14
0
def cluster():
    """Create cluster with manual provisioner."""
    _uuid = uuid.uuid4()
    _user = user()

    prov = Provisioner(_user.namespace,
                       name='Fixtured provisioner',
                       engine='kqueen.engines.ManualEngine',
                       owner=_user)
    prov.save(check_status=False)

    create_kwargs = {
        'id': _uuid,
        'name': 'Name for cluster {}'.format(_uuid),
        'provisioner': prov,
        'state': config.get('CLUSTER_UNKNOWN_STATE'),
        'kubeconfig': yaml.load(open('kubeconfig_localhost', 'r').read()),
        'created_at': datetime.datetime.utcnow().replace(microsecond=0),
        'owner': _user
    }

    return Cluster.create(_user.namespace, **create_kwargs)
Ejemplo n.º 15
0
    def test_delete_remove_object(self):
        obj = self.test_create_over_api()
        obj.delete()

        assert not Cluster.exists(self.namespace, obj.id)
Ejemplo n.º 16
0
 def test_id_generation(self):
     empty = Cluster()
     empty.save()
Ejemplo n.º 17
0
            engine='kqueen.engines.JenkinsEngine',
            parameters={
                'username': '******',
                'password': '******'
            }
        )
        provisioner.save(check_status=False)
    except:
        raise Exception('Adding AWS provisioner failed')


    try:
        cluster = Cluster(
            id=uuid_jenkins,
            name='AWS Calico SM 33',
            state='OK',
            provisioner=provisioner,
            kubeconfig=yaml.load(requests.get(kubeconfig_url).text),
        )
        cluster.save()
    except:
        raise Exception('Adding AWS cluster failed')


    # Local cluster
    try:
        provisioner = Provisioner(
            id=uuid_provisioner_local,
            name='Manual provisioner',
            state='OK',
            engine='kqueen.engines.ManualEngine',
Ejemplo n.º 18
0
    def test_exists(self, cluster):
        assert not Cluster.exists(cluster._object_namespace, cluster.id)

        cluster.save()
        assert Cluster.exists(cluster._object_namespace, cluster.id)
Ejemplo n.º 19
0
    def test_list_with_objects(self, cluster):
        cluster.save()

        loaded = Cluster.list(cluster._object_namespace)
        assert str(cluster.id) in loaded
Ejemplo n.º 20
0
 def test_exists(self, cluster):
     assert not Cluster.exists(cluster.id)
     cluster.save()
     assert Cluster.exists(cluster.id)
Ejemplo n.º 21
0
    def test_kubeconfig_load_is_dict(self, cluster):
        cluster.save()

        loaded = Cluster.load(cluster._object_namespace, cluster.id)
        assert isinstance(loaded.kubeconfig, dict), 'Loaded kubeconfig is not dict'
Ejemplo n.º 22
0
#!/usr/bin/env python3

from kqueen.server import create_app
from kqueen.models import Cluster

app = create_app()
with app.app_context():
    cluster = Cluster.load('demoorg', 'c02d3b7c-d06e-11e7-973c-68f72873a109')
    print(cluster)
    print(cluster.get_dict())

    print(cluster.engine)
    print(cluster.provisioner.get_engine_cls())
    #    cluster.engine.provision()
    print(cluster.engine.get_kubeconfig())
#    cluster.engine.deprovision()
Ejemplo n.º 23
0
    # GKE provisioner
    try:
        provisioner = Provisioner(user.namespace,
                                  id=uuid_provisioner_gke,
                                  name='Google Kubernetes engine',
                                  state='OK',
                                  engine='kqueen.engines.GceEngine',
                                  created_at=datetime.utcnow())
        provisioner.save(check_status=False)
    except:
        raise Exception('Adding GKE provisioner failed')

    try:
        cluster = Cluster(user.namespace,
                          id=uuid_gke,
                          state='OK',
                          name='GKE clustet, paused',
                          provisioner=provisioner,
                          created_at=datetime.utcnow())
        cluster.save()
    except:
        raise Exception('Adding GKE provisioner failed')

    # AKS provisioner
    try:
        provisioner = Provisioner(user.namespace,
                                  id=uuid_provisioner_aks,
                                  name='Azure Kubernetes Service',
                                  state='OK',
                                  engine='kqueen.engines.AksEngine',
                                  created_at=datetime.utcnow())
        provisioner.save(check_status=False)
Ejemplo n.º 24
0
#!/usr/bin/env python3

from kqueen.server import create_app
from kqueen.models import Cluster

app = create_app()
with app.app_context():
    cluster = Cluster.load('demoorg', '9212695e-3aad-434d-ba26-3403481d37a1')
    print(cluster)
    print(cluster.get_dict())

    print(cluster.engine)
    print(cluster.provisioner.get_engine_cls())
    cluster.engine.provision()
    print(cluster.engine.get_kubeconfig())