예제 #1
0
def create_snapshot(ctx: Context, disk: DODiskIdentifier, snapshot_name: str,
                    snapshot_description: str) -> NewSnapshotIdentifier:
    volume = digitalocean.Volume(id=disk.volume_id)

    snapshot = volume.snapshot(snapshot_name)

    return snapshot['snapshot']['id']
def build_context(args):
    context = args

    if 'token' not in context:
        context['token'] = os.environ.get('DO_TOKEN')
    
    manager = digitalocean.Manager(token=context['token'])
    my_droplets = manager.get_all_droplets()
    mydrop = [_ for _ in my_droplets if _.ip_address == get_ip_address()][0]
    
    context['droplet_id'] = mydrop.id
    context['droplet'] = mydrop
    context['volume_name'] = mydrop.name + '-volume'
    context['volume_directory'] = '/mnt/' + context['volume_name']
    
    context['volume'] = digitalocean.Volume(
        token= context['token'],
        name= context['volume_name'],
        region= context['droplet_region'],
        size_gigabytes= context['volume_size_gbs']
    )

    context['user'] = os.environ.get('USER')
    if 'sudo_password' not in context:
        context['sudo_password'] = os.environ.get('SUDO')

    return context
예제 #3
0
    def test_create_with_tags(self):
        data = self.load_from_file('volumes/single_with_tags.json')

        url = self.base_url + "volumes/"
        responses.add(responses.POST,
                      url,
                      body=data,
                      status=201,
                      content_type='application/json')

        volume = digitalocean.Volume(droplet_id=12345,
                                     region='nyc1',
                                     size_gigabytes=100,
                                     filesystem_type='ext4',
                                     filesystem_label='label',
                                     tags=['tag1', 'tag2'],
                                     token=self.token).create()

        self.assertEqual(volume.tags, ['tag1', 'tag2'])

        self.assertEqual(responses.calls[0].request.url,
                         self.base_url + "volumes/")
        self.assertEqual(volume.id, "506f78a4-e098-11e5-ad9f-000f53306ae1")
        self.assertEqual(volume.size_gigabytes, 100)
        self.assertEqual(volume.filesystem_type, "ext4")
예제 #4
0
    def test_create(self):
        data = self.load_from_file('volumes/single.json')

        responses.add(responses.POST,
                      self.base_url + "volumes/",
                      body=data,
                      status=201,
                      content_type='application/json')

        volume = digitalocean.Volume(droplet_id=12345,
                                     region='nyc1',
                                     size_gigabytes=100,
                                     token=self.token).create()

        self.assertEqual(responses.calls[0].request.url,
                         self.base_url + "volumes/")
        self.assertEqual(volume.id, "506f78a4-e098-11e5-ad9f-000f53306ae1")
        self.assertEqual(volume.size_gigabytes, 100)
예제 #5
0
 def create_data_volumes(self, hostname):
     if self.get_data_volumes(hostname):
         raise RuntimeError("Volumes already provisioned for host %s" % \
                            hostname)
     name = self.volume_name(hostname)
     size = self.hosts[hostname]['volume_size']
     region = self.hosts[hostname]['region']
     print "Creating %sGB data volume %s for host %s (region %s)" % \
         (size, name, hostname, region)
     v = digitalocean.Volume(
         token = self.token,
         size_gigabytes = size,
         name = name,
         region = region,
         )
     v.create()
     time.sleep(5)
     return v
예제 #6
0
    def writeVolume(self, volumeSize, volumeDescription=None):

        self.volumeSize = volumeSize

        if volumeDescription == None:
            self.volumeDescription = "No description specified"
            volumeName = str(datetime.datetime.now())
        else:
            self.volumeDescription = str(volumeDescription)
            volumeName = volumeDescription + "_volume"

        self.logger.debug("Creating volume of size " + str(self.volumeSize))
        self.logger.debug("Creating volume of description " +
                          self.volumeDescription)

        self.volume = digitalocean.Volume(
            token=self.token,
            size_gigabytes=int(self.volumeSize),
            name=volumeName,
            description=self.volumeDescription,
            region='nyc3'  # static for now, though it should be a parameter.
        )
        self.volume.create()
예제 #7
0
 def setUp(self):
     super(TestVolume, self).setUp()
     self.volume = digitalocean.Volume(
         id='506f78a4-e098-11e5-ad9f-000f53306ae1', token=self.token)