Beispiel #1
0
 def execute(self, repository, image_name, image_tag, base_image,
             dockerfile, publish, env):
     full_image_name = get_image_full(repository, image_name, image_tag)
     self.dockerfile.write(env,
                           dockerfile=dockerfile,
                           base_image=base_image)
     self.build(full_image_name)
     if publish:
         self.publish(full_image_name)
Beispiel #2
0
def test_compile_ast(trainer):
    trainer.fill_image_name_and_tag()
    svc, env = trainer.compile_ast()
    assert env == None
    assert len(svc['jobs']) == 1

    job = svc['jobs'][0]

    assert len(job['containers']) == 1
    assert job['containers'][0]['image'] == get_image_full(
        REPO_NAME, IMAGE_NAME, IMAGE_TAG)
Beispiel #3
0
 def add_jobs(self, svc, count, repository, image_name, image_tag, volumes,
              volume_mounts):
     full_image_name = get_image_full(repository, image_name, image_tag)
     svc['jobs'] = [{
         "name":
         image_name,
         # TODO should parallelism and completion be surfaced ? How would that be implemented in all backends
         "parallelism":
         count,
         "completion":
         count,
         "containers": [{
             "image": full_image_name,
             "volumeMounts": volume_mounts
         }],
         "volumes":
         volumes
     }]
     return svc
Beispiel #4
0
def test_add_training(architecture, job_count):
    svc = {}

    repo = 'test'
    image_name = 'testimage'
    image_tag = '1.0'
    full_image_name = get_image_full(repo, image_name, image_tag)
    exp = {
        'jobs': [{
            'name': image_name,
            'parallelism': job_count,
            'completion': job_count,
            'containers': [{
                'image': full_image_name,
                'volumeMounts': []
            }],
            'volumes': []
        }]
    }
    assert exp == architecture.add_jobs(svc, job_count, repo, image_name,
                                        image_tag, [], [])
Beispiel #5
0
    def add_jobs(self, svc, count, repository, image_name, image_tag, volumes,
                 volume_mounts):
        full_image_name = get_image_full(repository, image_name, image_tag)
        tfjobs = []
        for ix in range(count):
            tfjobs.append({
                "name":
                "{}-{}-{}".format(image_name, image_tag, ix),
                "replicaSpecs": [{
                    "replicaType":
                    "MASTER",
                    "replicas":
                    1,
                    "containers": [{
                        "image": full_image_name,
                        "volumeMounts": volume_mounts
                    }],
                    "volumes":
                    volumes
                }]
            })

        svc["tfJobs"] = tfjobs
        return svc
Beispiel #6
0
def test_get_image_full():
    img = get_image_full(REPO_NAME, IMAGE_NAME, IMAGE_TAG)
    assert img == '{}/{}:{}'.format(REPO_NAME, IMAGE_NAME, IMAGE_TAG)
Beispiel #7
0
    def fill_image_name_and_tag(self):
        if self.image_tag is None:
            self.image_tag = get_unique_tag()

        self.full_image_name = get_image_full(self.repository, self.image_name,
                                              self.image_tag)