def read_file(cls, path):
        if not os.path.exists(path):
            raise error.InvalidFileException(
                "File '{0}' doesn't exist.".format(path))

        serializer = Serializer()
        return serializer.read_from_full_path(path)
示例#2
0
    def read_data_from_dir(cls, dir_path=None, serializer=None):
        """Read graph data from directory.

        :param dir_path: path
        :type dir_path: str
        :param serializer: serializer object
        :type serializer: object
        :return: data
        :rtype: list|object
        """
        cls.check_dir(dir_path)
        serializer = serializer or Serializer()

        metadata_filepath = os.path.join(dir_path, 'metadata.yaml')
        if os.path.exists(metadata_filepath):
            data = serializer.read_from_full_path(metadata_filepath)
        else:
            data = {}

        tasks = []
        for file_name in iterfiles(dir_path, 'tasks.yaml'):
            task_data = serializer.read_from_full_path(file_name)
            if task_data:
                tasks.extend(task_data)

        if tasks:
            data['tasks'] = tasks

        if not data:
            msg = ("Nothing to upload. Check if at least one 'tasks.yaml' "
                   "file is not empty and exists in '{path}' directory "
                   "path".format(path=dir_path))
            raise error.ActionException(msg)
        return data
示例#3
0
    def write_info_to_file(cls,
                           info_type,
                           data,
                           transaction_id,
                           serializer=None,
                           file_path=None):
        """Write additional info to the given path.

        :param info_type: deployment_info | cluster_settings |
                          network_configuration
        :type info_type: str
        :param data: data
        :type data: list of dict
        :param serializer: serializer
        :param transaction_id: Transaction ID
        :type transaction_id: str or int
        :param file_path: path
        :type file_path: str
        :return: path to resulting file
        :rtype: str
        """
        serializer = serializer or Serializer()
        if file_path:
            return serializer.write_to_full_path(file_path, data)
        else:
            return serializer.write_to_path(
                cls.get_default_info_path(info_type, transaction_id), data)
示例#4
0
 def test_write_to_path_invalid_file_exception(self):
     serializer = Serializer('json')
     mo = mock.mock_open()
     with mock.patch('__main__.open', mo, create=True) as mocked_open:
         mocked_open.side_effect = IOError()
         self.assertRaises(error.InvalidFileException,
                           serializer.write_to_path, '/foo/bar/baz',
                           self.DATA)
示例#5
0
 def test_get_from_params(self):
     params_to_formats = (
         ('yaml', 'yaml'),
         ('json', 'json'),
         ('xyz', Serializer.default_format),
     )
     for param, format in params_to_formats:
         params = mock.Mock(serialization_format=format)
         serializer = Serializer.from_params(params)
         self.assertEqual(serializer.format, format)
 def test_get_from_params(self):
     params_to_formats = (
         ('yaml', 'yaml'),
         ('json', 'json'),
         ('xyz', Serializer.default_format),
     )
     for param, format in params_to_formats:
         params = mock.Mock(serialization_format=format)
         serializer = Serializer.from_params(params)
         self.assertEqual(serializer.format, format)
示例#7
0
 def action_func(self, params):
     """Entry point for all actions subclasses
     """
     APIClient.debug_mode(debug=params.debug)
     self.serializer = Serializer.from_params(params)
     if self.flag_func_map is not None:
         for flag, method in self.flag_func_map:
             if flag is None or getattr(params, flag):
                 method(params)
                 break
示例#8
0
 def action_func(self, params):
     """Entry point for all actions subclasses
     """
     APIClient.debug_mode(debug=params.debug)
     self.serializer = Serializer.from_params(params)
     if self.flag_func_map is not None:
         for flag, method in self.flag_func_map:
             if flag is None or getattr(params, flag):
                 method(params)
                 break
示例#9
0
def get_args_for_update(params, serializer=None):
    result = {}
    for attr in _updatable_keys:
        value = getattr(params, attr, None)
        if value is not None:
            result[attr] = value

    if 'meta' in result:
        serializer = serializer or Serializer.from_params(params)
        result['meta'] = serializer.deserialize(result['meta'])

    return result
示例#10
0
def get_args_for_update(params, serializer=None):
    result = {}
    for attr in _updatable_keys:
        value = getattr(params, attr, None)
        if value is not None:
            result[attr] = value

    if 'meta' in result:
        serializer = serializer or Serializer.from_params(params)
        result['meta'] = serializer.deserialize(result['meta'])

    return result
示例#11
0
 def write_tasks_to_file(cls, tasks_data, serializer=None, file_path=None):
     serializer = serializer or Serializer()
     if file_path:
         return serializer.write_to_full_path(
             file_path,
             tasks_data
         )
     else:
         return serializer.write_to_path(
             cls.get_default_tasks_data_path(),
             tasks_data
         )
示例#12
0
    def read_tasks_data_from_file(cls, file_path=None, serializer=None):
        """Read Tasks data from given path.

        :param file_path: path
        :type file_path: str
        :param serializer: serializer object
        :type serializer: object
        :return: data
        :rtype: list|object
        """
        cls.check_file_path(file_path)
        return (serializer or Serializer()).read_from_full_path(file_path)
示例#13
0
    def download(env_id,
                 ip_addr_id=None,
                 network_id=None,
                 network_role=None,
                 file_path=None):

        env = objects.Environment(env_id)
        vips_data = env.get_vips_data(ip_address_id=ip_addr_id,
                                      network=network_id,
                                      network_role=network_role)
        vips_data_file_path = env.write_vips_data_to_file(
            vips_data, file_path=file_path, serializer=Serializer())
        return vips_data_file_path
示例#14
0
 def take_action(self, parsed_args):
     task = self.client.execute(env_id=parsed_args.env,
                                dry_run=parsed_args.dry_run,
                                noop_run=parsed_args.noop,
                                force=parsed_args.force,
                                debug=parsed_args.trace,
                                **self.get_options(parsed_args))
     if parsed_args.format:
         msg = Serializer(parsed_args.format).serialize(task.data) + '\n'
     else:
         msg = ('Deployment task with id {0} for the environment {1} '
                'has been started.\n'.format(task.data['id'],
                                             task.data['cluster']))
     self.app.stdout.write(msg)
示例#15
0
    def action_func(self, params):
        """Entry point for all actions subclasses
        """
        APIClient.debug_mode(debug=params.debug)
        if getattr(params, 'user') and getattr(params, 'password'):
            APIClient.user = params.user
            APIClient.password = params.password
            APIClient.initialize_keystone_client()

        self.serializer = Serializer.from_params(params)
        if self.flag_func_map is not None:
            for flag, method in self.flag_func_map:
                if flag is None or getattr(params, flag):
                    method(params)
                    break
示例#16
0
文件: base.py 项目: Zipfer/fuel-web
    def action_func(self, params):
        """Entry point for all actions subclasses
        """
        APIClient.debug_mode(debug=params.debug)
        if getattr(params, 'user') and getattr(params, 'password'):
            APIClient.user = params.user
            APIClient.password = params.password
            APIClient.initialize_keystone_client()

        self.serializer = Serializer.from_params(params)
        if self.flag_func_map is not None:
            for flag, method in self.flag_func_map:
                if flag is None or getattr(params, flag):
                    method(params)
                    break
示例#17
0
    def take_action(self, parsed_args):
        meta = None
        if parsed_args.meta:
            serializer = Serializer.from_params(parsed_args)
            meta = serializer.deserialize(parsed_args.meta)

        net_group = self.client.create(name=parsed_args.name,
                                       release=parsed_args.release,
                                       vlan=parsed_args.vlan,
                                       cidr=parsed_args.cidr,
                                       gateway=parsed_args.gateway,
                                       group_id=parsed_args.node_group,
                                       meta=meta)

        net_group = data_utils.get_display_data_single(self.columns, net_group)
        return self.columns, net_group
示例#18
0
    def take_action(self, parsed_args):
        meta = None
        if parsed_args.meta:
            serializer = Serializer.from_params(parsed_args)
            meta = serializer.deserialize(parsed_args.meta)

        net_group = self.client.create(
            name=parsed_args.name,
            release=parsed_args.release,
            vlan=parsed_args.vlan,
            cidr=parsed_args.cidr,
            gateway=parsed_args.gateway,
            group_id=parsed_args.node_group,
            meta=meta)

        net_group = data_utils.get_display_data_single(self.columns, net_group)
        return self.columns, net_group
示例#19
0
    def action_func(self, params):
        """Entry point for all actions subclasses
        """
        APIClient.debug_mode(debug=params.debug)
        if getattr(params, "user") and getattr(params, "password"):
            APIClient.user = params.user
            APIClient.password = params.password
            # tenant is set by default to 'admin' in parser.add_argument
            APIClient.tenant = params.tenant
            APIClient.initialize_keystone_client()

        self.serializer = Serializer.from_params(params)
        if self.flag_func_map is not None:
            for flag, method in self.flag_func_map:
                if flag is None or getattr(params, flag):
                    method(params)
                    break
示例#20
0
    def download_info_to_file(self, transaction_id, info_type, file_path):
        """Get and save to path for task additional info e.g. deployment info

        :param transaction_id: Transaction ID
        :type transaction_id: str or int
        :param info_type: deployment_info | cluster_settings |
                          network_configuration
        :type info_type: str
        :param file_path: path
        :type file_path: str
        :return: path
        :rtype: str
        """
        data = self.client.download(transaction_id=transaction_id)
        return self.write_info_to_file(info_type=info_type,
                                       data=data,
                                       transaction_id=transaction_id,
                                       serializer=Serializer(),
                                       file_path=file_path)
示例#21
0
    def take_action(self, args):
        tasks_data = []
        for tasks_level_name in ('all', 'cluster', 'release', 'plugins'):
            if getattr(args, tasks_level_name):
                tasks_data = self.client.download(
                    env_id=args.env,
                    level=tasks_level_name,
                    graph_type=args.type
                )
                break

        # write to file
        graph_data_file_path = self.write_tasks_to_file(
            tasks_data=tasks_data,
            serializer=Serializer(),
            file_path=args.file)

        self.app.stdout.write(
            "Tasks were downloaded to {0}\n".format(graph_data_file_path)
        )
示例#22
0
 def test_serialize(self):
     deserializers = {'json': json.loads, 'yaml': yaml.load}
     for format, deserialize in deserializers.items():
         serialized = Serializer(format).serialize(self.DATA)
         self.assertEqual(self.DATA, deserialize(serialized))
 def write_file(cls, path, data):
     serializer = Serializer()
     return serializer.write_to_full_path(path, data)
示例#24
0
 def __init__(self, obj_id, **kwargs):
     self.connection = DefaultAPIClient
     self.serializer = Serializer.from_params(kwargs.get('params'))
     self.id = obj_id
     self._data = None
示例#25
0
 def __init__(self, obj_id, **kwargs):
     self.connection = APIClient
     self.serializer = Serializer.from_params(kwargs.get('params'))
     self.id = obj_id
     self._data = None
示例#26
0
    def test_deserialize_fail(self):

        broken_data = '{foo: bar: buzz:}'
        for format in ('json', 'yaml'):
            self.assertRaises(error.BadDataException,
                              Serializer(format).deserialize, broken_data)
示例#27
0
 def __init__(self):
     # Mapping of flags to methods
     self.flag_func_map = None
     self.serializer = Serializer()
示例#28
0
 def __init__(self, obj_id, **kwargs):
     self.connection = APIClient
     self.serializer = Serializer(**kwargs)
     self.id = obj_id
     self._data = None
示例#29
0
 def upload(env_id, file_path):
     env = objects.Environment(env_id)
     vips_data = env.read_vips_data_from_file(file_path=file_path,
                                              serializer=Serializer())
     env.set_vips_data(vips_data)
示例#30
0
 def test_deserialize(self):
     serializers = {'json': json.dumps, 'yaml': yaml.safe_dump}
     for format, serialize in serializers.items():
         serialized = serialize(self.DATA)
         deserialized = Serializer(format).deserialize(serialized)
         self.assertEqual(self.DATA, deserialized)
示例#31
0
 def take_action(self, parsed_args):
     version = self.client.get_all()
     serializer = Serializer.from_params(parsed_args)
     msg = serializer.serialize(version)
     self.app.stdout.write(msg)