def create(self, callback=None): """Creates a new volume :param callback: Optional callback to send the resulting :class:`Job` :type callback: func. :returns: :class:`Job` :raises: :class:`VolumeCreationException` """ optional_attrs = ['label'] if self.volume_id is not None: raise VolumeCreationException( 'Cannot create an already created volume: %s' % self.volume_id) parms = {'name': self.name, 'description': self.description, 'data_center': self.data_center, 'size_in_gb': self.size_in_gb, 'budget': self.budget} for oa in optional_attrs: try: if getattr(self, oa) is not None: parms[0].update({oa: getattr(self, oa)}) except AttributeError: pass payload = {'addVolume': [camel_keys(parms)]} self.post(data=json.dumps(payload)) if self.last_error is None: j = Job(self.current_job, endpoint=self.endpoint) j.load() if callback is not None: callback(j) else: return j else: raise VolumeCreationException(self.last_error)
def create(self, **kwargs): """Create a new network :param callback: Optional callback to call with resulting :class:`Network` :type callback: func. :returns: :class:`Job` :raises: :class:`NetworkException` """ optional_attrs = [ 'owning_groups', 'ntp_servers', 'dns_servers', 'label' ] payload = { 'add_network': [{ 'budget': self.budget, 'name': self.name, 'network_address': self.network_address, 'description': self.description, 'region': self.region }] } if 'label' in kwargs: payload['add_network'][0]['label'] = kwargs['label'] callback = kwargs.get('callback', None) for oa in optional_attrs: try: if getattr(self, oa) is not None: payload['add_network'][0].update({oa: getattr(self, oa)}) except AttributeError: pass self.post(self.PATH, data=json.dumps(camel_keys(payload))) if self.last_error is None: j = Job(self.current_job, endpoint=self.endpoint) j.load() if callback is not None: callback(j) else: return j else: raise NetworkException(self.last_error)
def create(self, **kwargs): """Create a new network :param callback: Optional callback to call with resulting :class:`Network` :type callback: func. :returns: :class:`Job` :raises: :class:`NetworkException` """ optional_attrs = [ 'owning_groups', 'ntp_servers', 'dns_servers', 'label'] payload = {'add_network': [{ 'budget': self.budget, 'name': self.name, 'network_address': self.network_address, 'description': self.description, 'region': self.region}]} if 'label' in kwargs: payload['add_network'][0]['label'] = kwargs['label'] callback = kwargs.get('callback', None) for oa in optional_attrs: try: if getattr(self, oa) is not None: payload['add_network'][0].update({oa: getattr(self, oa)}) except AttributeError: pass self.post(self.PATH, data=json.dumps(camel_keys(payload))) if self.last_error is None: j = Job(self.current_job) j.load() if callback is not None: callback(j) else: return j else: raise NetworkException(self.last_error)